ошибка C2440: '=': невозможно преобразовать из - PullRequest
1 голос
/ 09 июня 2011

В этот раз моя проблема заключается в назначении функции указателю на функцию. У меня есть такой класс:

class MyClass
{
 private:
   bool dofunction() {return true;}

protected:
   bool (*ptf) (); 

public:
   MyClass();
};

MyClass::MyClass
{
    ptf = dofunction;   //// error 
}

но если я использую функцию вне класса, она компилируется:

bool function()
{
    return true; 
}

MyClass::MyClass()
{
    ptf = function;   //// OK
}

любая помощь?


ах !! спасибо

Я использовал static ключевое слово.

Ответы [ 3 ]

5 голосов
/ 09 июня 2011

Для функции-члена класса вам нужно использовать указатель на функции-члены :

bool (MyClass::*ptf) () ;

Он должен быть присвоен как,

ptf = &(MyClass::dofunction);

Также обратите внимание, чтотеперь вы не можете назначить ptf для функций, не относящихся к классу.Это совершенно другой тип (даже если синтаксис выглядит одинаково).

0 голосов
/ 09 июня 2011

Я думаю, что это должно быть:

bool (MyClass::*ptf)(); 
0 голосов
/ 09 июня 2011

Первый тип bool (MyClass::*ptf) () .. вам нужно указать класс, в котором он находится.

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