我有一個包含函數指針列表的類。 這些函數指針指向一個子類,這是必然像這樣的成員函數:複製構造函數中的函數指針
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複製**類**時,函數指針仍然指向舊的**類**。如何重新綁定函數指針到新的**類**?」您可能是指* object *來代替。 – user2079303