为什么我们不能在课堂上使用"this"?

kal*_*kal 2 c++

例如

class Test {
  public:
      void setVal(const std::string& str) {
           this.isVal = str; //This will error out
      }

  private:

      string isVal;
};
Run Code Online (Sandbox Code Playgroud)

Chr*_*ung 33

在C++中,this是一个指针(与引用相对).所以你必须改为说this->isVal.


Fry*_*Guy 15

除了克里斯的回答,您还可以:

(*this).isVal = str;
Run Code Online (Sandbox Code Playgroud)

然而,做克里斯所说的更好,因为它更正统.这只是说明在调用指针之前需要取消引用指针.


sth*_*sth 8

您也不需要this显式使用来访问成员变量/方法.你可以简单地说:

isVal = str;
Run Code Online (Sandbox Code Playgroud)