是否有对成员变量的任何引用? [关闭]
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
。该代码是功能性的,但不寻常,因为您可以只写 ->
而不是 *
后跟 .
或完全删除 this
显式引用。
【参考方案1】:
我尝试对成员变量进行引用,但发现它不起作用。有没有办法做到这一点?
是的:
struct Test
std::string str_m;
void doSomething()
std::string& str = str_m;
;
[如果没有],有没有办法不经常写“(* this)”。 ?
不清楚您从哪里得到必须写(*this).member
的想法。如果你想使用this
,那么请写this->member
,但是在课程范围内没有必要这样做(很少有例外),通常不赞成直接写member
.
PS:您报告的错误来自不同的代码,而不是您发布的那个。
【讨论】:
以上是关于是否有对成员变量的任何引用? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
java中为什么,int类型的成员变量不能调用equals方法以及hashCode方法,而String类型的成员变量可以?