错误C2436成员函数或构造函数初始化列表中的嵌套类

时间:2011-05-04 08:36:21

标签: c++ function-pointers

我在标题中声明了一个函数指针,如下所示:

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

我该如何解决?

5 个答案:

答案 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); //你错过了*