加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

为什么不能从C 11中的非限定成员函数名称获取指向成员的指针?

发布时间:2020-12-16 04:54:45 所属栏目:百科 来源:网络整理
导读:以下代码: struct X{ void f() {} void g() { auto h = f; }}; 结果是: error: ISO C++ forbids taking the address of an unqualifiedor parenthesized non-static member function to form a pointerto member function. Say ‘X::f’ 我的问题是,为什么
以下代码:
struct X
{
    void f() {}

    void g()
    {
        auto h = &f;
    }
};

结果是:

error: ISO C++ forbids taking the address of an unqualified
or parenthesized non-static member function to form a pointer
to member function.  Say ‘&X::f’

我的问题是,为什么这个标准不允许和禁止这个?作为用户,将它称为不合格会更方便,所以我假设有一些其他的基本原理(安全性?模糊性?编译器实现的简易性?)?

解决方法

指向成员的指针非常罕见,可以进行特殊处理,而不一定是最经济的处理.决定唯一接受的形式是错误消息中引用的形式.在任何情况下,这种形式都不会与其他任何形式发生冲突.并且可以防止更多松散形式的含糊不清.

实践表明对PTMF的认识很少,而且它们与功能基本不同. f或& f可能是对正常功能的请求.一个不能为非静态成员服务的人.那些真正意味着PTMF的人说是这样添加& X :: part.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读