ошибка члена-функции C2436 или вложенного класса в списке инициализатора конструктора - PullRequest
1 голос
/ 04 мая 2011

У меня есть указатель функции, объявленный в моем заголовке, например:

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 ]

7 голосов
/ 04 мая 2011

Это не указатель на функцию, вам не хватает *.Попробуйте:

typedef void (*intCB)(int);
2 голосов
/ 04 мая 2011

Указатель функции - это указатель , поэтому не пропустите *

typedef void (*intCB)(int);
2 голосов
/ 04 мая 2011

Ваш typedef неправильный, он должен быть typedef void (*intCB)(int );

1 голос
/ 04 мая 2011

указатель на функцию typedef Должно быть:

typedef void (* intCB) (int);// Вы пропустили *

1 голос
/ 04 мая 2011

И

MyClass::MyClass : m_intCB(0)

должно быть:

MyClass::MyClass() : m_intCB(0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...