私は関数へのポインタを持つ単純なクラスを持っています。コンストラクタ関数へのポイントにそれを「朝()」とコンパイルするとき、私はエラーメッセージが表示されます:C++関数ポインタの代入でクラス内の型を変換できない
error: cannot convert ‘Test::morning’ from type ‘void (Test::)()’ to type ‘Test::function {aka void (*)()}’
Test() {assignPtr = morning;}
コード「朝()」とのtypedefは、関数の外で宣言され、私ができるされている場合、コンパイルありません現在のクラス内でそれを動作させる方法を理解していない。
#include <iostream>
#include <string>
class Test {
public:
Test() {assignPtr = morning;}
void say(std::string a) {name = a; assignPtr();};
private:
typedef void(*function)();
void morning() {std::cout << "Good morning, " << name << std::endl;}
void night() {};
function assignPtr;
std::string name;
};
int main() {
Test a;
a.say("Miguel");
}