我很难弄清楚如何将类成员函数传递给子类(不是派生的)。
我的顶级课程是这样的:
class CTop
{
public:
CTop();
int func1(void);
private:
CFnList* _funcList;
};
CTop::CTop():
_funcList(0)
{
_funcList = new CFnList();
_funcList->addFnPtrToList(0, &CTop::func1);
}
int CTop::func1(void)
{
// Does some stuff...
}
我的函数列表类是这样的:
class CFnList
{
public:
// Public functions
CFnList();
void addFnPtrToList(int index, int (*fn)(void));
private:
// Fn pointer list
typedef struct
{
int index;
int (*fn) (void);
}fn_list_t;
// function pointer list
QVector<fn_list_t> _fn_list;
};
所以基本上在这里我有一个类 CTop 的实例,它的一个成员是一个指向类 CFnList 的指针。CFnList 指针在 CTop 的构造函数中实例化。然后我想通过调用以下行将指向 CTop 的成员函数之一的指针传递给 CFnList:“_funcList->addFnPtrToList(0, &CTop::func1);” 我得到的问题(非常正确) addFnPtrToList 不采用参数(int,(CTop::*)())。所以编译器知道这个函数是一个特定的成员函数,而不仅仅是一个通用(可能是静态的)函数。
有没有办法将指向成员函数的指针传递给子类?就我而言,我希望子类能够调用此函数。我在想我可能必须制作静态成员函数或其他东西,但语法让我无法理解如何做到这一点。
所有帮助/建议表示赞赏。饲料