【发布时间】:2016-11-22 11:45:06
【问题描述】:
我有一个带有函数指针列表的类。 这些函数指针指向一个子类的成员函数,其绑定如下:
functionList.push_back(std::bind(&SubClass::function, this, std::placeholders::_1, std::placeholders::_2));
现在,当使用 functionList 复制类时,函数指针仍然指向旧类。 如何将函数指针重新绑定到新类?
这里是一个示例代码:
#include <vector>
#include <functional>
class SomeClass
{
};
class testClass
{
public:
typedef std::function<void(const SomeClass& var1, const SomeClass& var2)> transitionFunction;
testClass(){}
testClass(const testClass&s)
{
for(transitionFunction func : s.functionList)
{
// how to rebind the function pointer to the new this?
functionList.push_back("???");
}
}
std::vector<transitionFunction> functionList;
};
class SubClass : public testClass
{
SubClass()
{
functionList.push_back(std::bind(&SubClass::function, this, std::placeholders::_1, std::placeholders::_2));
}
void function(const SomeClass& var1, const SomeClass& var2)
{
}
};
谢谢!
【问题讨论】:
-
所以您想在
testClass类型的对象上调用void SubClass::function(const SomeClass&, const SomeClass&),就好像函数在testClass中声明一样?那行不通...也许您可以更详细地描述您要实现的目标,以便我们找到合适的解决方案!? -
不可能“重新绑定”这样的函数。您将不得不重新设计您的课程,以便以其他方式实现您的目标。
-
"现在,当用 functionList 复制 class 时,函数指针仍然指向旧的 class。我怎样才能将函数指针重新绑定到新的类?”您可能指的是 object。
-
user2079303,谢谢!该链接有帮助
标签: c++ c++11 function-pointers member-function-pointers stdbind