小编Bil*_*med的帖子

GCC 编译器产生错误:成员函数的无效使用,而 CLang 编译器则不会

我正在使用以下程序:

\n

在main函数中,我想打印poll_timer函数的地址。

\n

该程序使用 clang 可以成功编译并运行,但使用 GCC 则不能。

\n

我在使用 GCC 时收到以下错误

\n
"709568706/source.cpp: In function \xe2\x80\x98int main()\xe2\x80\x99:\n709568706/source.cpp:28:32: error: invalid use of member function \xe2\x80\x98static void MessagePoller::poll_timer()\xe2\x80\x99 (did you forget the \xe2\x80\x98()\xe2\x80\x99 ?)\n     std::cout << (void*)m_sut->poll_timer << std::endl;\n                         ~~~~~~~^~~~~~~~~~"\n
Run Code Online (Sandbox Code Playgroud)\n
#include <iostream>\n#include <memory>\n\nclass MessagePoller\n{\n  protected:\n    static void poll_timer()\n    {\n        std::cout << "Poll timer Base called\\n";\n    }\n};\n\nclass TestMessagePoller : public MessagePoller\n{\npublic:\n    using MessagePoller::poll_timer;\n\n};\ntypedef std::shared_ptr<TestMessagePoller> TestMessagePollerPtr;\n\nint main()\n{   \n    TestMessagePollerPtr m_sut;\n    m_sut = TestMessagePollerPtr(new TestMessagePoller());\n\n    std::cout << "HERE1\\n";\n    m_sut->poll_timer();\n    std::cout << (void*)m_sut->poll_timer …
Run Code Online (Sandbox Code Playgroud)

c++ gcc compiler-specific clang++

11
推荐指数
1
解决办法
428
查看次数

标签 统计

c++ ×1

clang++ ×1

compiler-specific ×1

gcc ×1