我有一个类型定义:
typedef S32(iMyDataClass1::*getDataFunction_t)(void);
和一个类型:
struct functionMap_t {
std::vector<getDataFunction_t> pDataFunctionTable;
struct dataRequestor_t dataRequestor;
};
然后我有一个成员变量:
functionMap_t FnMap1;
然后我在成员初始化器列表中设置:
myClass::myClass() : FnMap1({
{
&iMyDataClass1::getData1,
&iMyDataClass1::getData2,
&iMyDataClass1::getData3
},
dataRequestor1
})
然后我在构造函数中使用它:
addNewFnMap(FnMap1);
这一切都很好。不幸的是,它对于指向不同类的函数指针是不可扩展的,因为getDataFunction_t
它绑定到了iMyDataClass1
我尝试使用模板,但遇到了我无法解决的问题。现在我正在尝试使用std::function
,这意味着我将原始 typedef 更改为(我认为):
typedef std::function<S32(void)> getDataFunction_t;
在这种情况下设置我的初始化列表的正确方法是什么?我在这里用std::bind
吗?
更新:这是我对新初始化列表的尝试。我不知道这是否正确,但这是我在发布这个问题之前所拥有的:
{
{
(std::bind(&iMyDataClass1::getData1, functionToFetchCorrectObject())),
(std::bind(&iMyDataClass1::getData2, functionToFetchCorrectObject())),
(std::bind(&iMyDataClass1::getData3, functionToFetchCorrectObject()))
},
PGN65370
}