你能解释一下为什么这段代码只显示 main() 中的最后一行 std::cout 吗?通过 stackoverflow.com 上的类似线程进行检查,无法将它们连接到我的,这个指向是否合法?我尝试将一个类的函数指针设置为另一个类函数:
#include <iostream>
class container;
class one {
public:
one()
{
eventsHandler = NULL;
};
~one() {};
void (container::*eventsHandler)();
};
class container {
public:
container()
{
zone = new one;
zone->eventsHandler = &container::events;
};
~container()
{
delete zone;
};
one *zone;
void events()
{
std::cout << "event handler is on..." << std::endl;
};
};
int main()
{
container *test = new container;
test->zone->eventsHandler;
std::cout << "just checker..." << std::endl;
delete test;
system("pause");
};
最佳答案
应该使用operator->*
来调用成员函数指针,并将test
赋值给将被调用的对象,
(test->*test->zone->eventsHandler)();
或者更清楚,
(test->*(test->zone->eventsHandler))();
关于c++ - 指向另一个类函数成员的类成员函数变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31912399/