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

c – 如何直接调用“operator – >()”?

发布时间:2020-12-16 10:52:30 所属栏目:百科 来源:网络整理
导读:出于某些奇怪的原因,我需要直接调用operator-()方法.例如: class A { public: void foo() { printf("Foo"); }};class ARef { public: A* operator-() { return a; } protected: A* a;}; 如果我有一个ARef对象,我可以通过编写来调用foo(): aref-foo(); 但是
出于某些奇怪的原因,我需要直接调用operator->()方法.例如:

class A {
    public:
        void foo() { printf("Foo"); }
};

class ARef {
    public:
        A* operator->() { return a; }
    protected:
        A* a;
};

如果我有一个ARef对象,我可以通过编写来调用foo():

aref->foo();

但是,我想获得指向受保护成员’a’的指针.我怎样才能做到这一点?

解决方法

aref.operator->(); // Returns A*

请注意,此语法也适用于所有其他运算符:

// Assuming A overloads these operators
A* aref1 = // ...
A* aref2 = // ...
aref1.operator*();
aref1.operator==(aref2);
// ...

为了更清晰的语法,您可以实现Get()函数或重载*运算符以允许James McNellis建议的& * aref.

(编辑:李大同)

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

    推荐文章
      热点阅读