【问题标题】: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();
  • 我的意思是指变量
  • 错误信息与您的代码不匹配。您没有在任何地方使用Test::doSomething。该代码是功能性的,但不寻常,因为您可以只写 -&gt; 而不是 * 后跟 . 或完全删除 this 显式引用。

标签: c++ class reference member-variables


【解决方案1】:

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

是的:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多