是否有对成员变量的任何引用? [关闭]

Posted

技术标签:

【中文标题】是否有对成员变量的任何引用? [关闭]【英文标题】:Are there any kind of references to a member variable? [closed] 【发布时间】:2020-03-28 18:06:35 【问题描述】:

我尝试对成员变量进行引用,但发现它不起作用。有没有办法做到这一点?如果没有,有没有办法不经常写“(* this)”。 ?

#include <iostream>
#include <string>

class Test

private:
    std::string str_m;

    void doSomething()
    
        std::string& str = (*this).str_m;      // does not work
        std::cout << str << '\n';
    

public:
    Test(std::string str): str_m(str)
    
        (*this).doSomething();
    

;

int main()

    Test test"aaa";
    return 0;

VS 编译器给了我:error C3867: 'Test::doSomething': non-standard syntax;使用 '&' 创建指向成员的指针

【问题讨论】:

不经常写(*this)的方法就是干脆不写.... 你从哪里得到这样的代码风格:(*this).doSomething(); 我的意思是指变量 cannot reproduce 错误信息与您的代码不匹配。您没有在任何地方使用Test::doSomething。该代码是功能性的,但不寻常,因为您可以只写 -&gt; 而不是 * 后跟 . 或完全删除 this 显式引用。 【参考方案1】:

我尝试对成员变量进行引用,但发现它不起作用。有没有办法做到这一点?

是的:

struct Test 
    std::string str_m;
    void doSomething()
    
        std::string& str = str_m;
    
;

[如果没有],有没有办法不经常写“(* this)”。 ?

不清楚您从哪里得到必须写(*this).member 的想法。如果你想使用this,那么请写this-&gt;member,但是在课程范围内没有必要这样做(很少有例外),通常不赞成直接写member .

PS:您报告的错误来自不同的代码,而不是您发布的那个。

【讨论】:

以上是关于是否有对成员变量的任何引用? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

右值引用成员变量有啥用

java 多态

将 const 引用成员设为临时变量是不是安全?

java中为什么,int类型的成员变量不能调用equals方法以及hashCode方法,而String类型的成员变量可以?

24.多态成员特点

Java Static 深入理解