我在标题中声明了一个函数指针,如下所示:
typedef void (intCB)(int );
我有一个像这样声明的类成员:
private:
intCB m_intCB;
在我的构造函数的初始化列表中,我想用0:
初始化它MyClass::MyClass : m_intCB(0)
{
#ifdef SOMETHING
m_intCB = &someOtherFunc;
#endif
}
只有特定的定义到位时,我才想将m_intCB设置为它,如果不是我想将它保持为0.上面代码的问题是我收到:
error C2436: 'm_intCB' : member function or nested class in constructor initializer list
我该如何解决?
答案 0 :(得分:7)
这不是函数指针,缺少*
。尝试:
typedef void (*intCB)(int);
答案 1 :(得分:2)
您的typedef
错误,应为typedef void (*intCB)(int );
答案 2 :(得分:2)
函数指针是指针,所以不要错过*
typedef void (*intCB)(int);
答案 3 :(得分:1)
和
MyClass::MyClass : m_intCB(0)
应该是:
MyClass::MyClass() : m_intCB(0)
答案 4 :(得分:1)
functioin指针typedef应该是:
typedef void(* intCB)(int); //你错过了*