【发布时间】:2017-10-12 03:36:19
【问题描述】:
我有一个简单的类,它有一个指向函数的指针。构造函数将其指向函数“morning()”,编译时收到错误消息:
error: cannot convert ‘Test::morning’ from type ‘void (Test::)()’ to type ‘Test::function {aka void (*)()}’
Test() {assignPtr = morning;}
当“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");
}
【问题讨论】:
标签: c++ function class pointers