首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么这个指向C++函数代码的指针会产生编译错误?

为什么这个指向C++函数代码的指针会产生编译错误?
EN

Stack Overflow用户
提问于 2009-11-26 07:24:13
回答 1查看 3.3K关注 0票数 1

有人能解决这个问题吗?我似乎在任何地方都找不到解决方案,但我看不出为什么下面的行(注释显示编译错误)应该是一个问题的逻辑原因。

Note:这个问题是How can a C++ base class determine at runtime if a method has been overridden?的衍生物

代码语言:javascript
运行
复制
class MyClass
{
        typedef void (MyClass::*MethodPtr)();  


        virtual void Method()
        {
                MethodPtr a = &MyClass::Method; // legal
                MethodPtr b = &Method;  // error C2276: ‘&’ : illegal operation on bound member function expression

                if (a == b)     // this method has not been overridden?
                        throw “Not overridden”;
        }
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-11-26 07:28:22

ISO C++禁止使用不合格或括号大小的非静态成员函数的地址来形成指向成员函数的指针。这就解决了名字损坏的问题。因此,您要做的工作在符合标准的C++编译器中是行不通的。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1802059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档