c++ - 指向另一个类函数成员的类成员函数变量

标签 c++ class pointers

你能解释一下为什么这段代码只显示 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))();

LIVE

关于c++ - 指向另一个类函数成员的类成员函数变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31912399/

相关文章:

c++ - 如何在 Google 测试 (gtest) 中使用 fixture 成员值运行参数化测试?

c++ - 程序找不到 libgcc_s_dw2-1.dll

c++ - 无法将新对象分配给 cpp 中的指针指针类型

调用 malloc 并将返回值存储在双指针中?

c++ - 全新安装 Qt SDK 和 Visual C++ 2008 时出现 LNK4099 链接器警告

C++ 通过常量引用传递结构

php - SQL 类数据类型

python - Biopython 类实例 - Entrez.read : I don't know how to manipulate the output 的输出

Python Beautifulsoup 从具有相同类的不同跨度中提取文本

c++ - 创建动态集合错误