C++在函数中的.h文件中重用相同的变量名(this.variable = variable error?)

Ken*_*Ken 0 c++ function this

我的.h文件中有一个变量的名称,该函数具有相同的名称...例如:

//computer.h  
class Computer{  
private:  
    string computerName;  
    int cores;  
}  

//computer.cpp  
Computer::Computer(string computerName, int cores)  
{  
    ...  
}  
Run Code Online (Sandbox Code Playgroud)

我想将.cpp函数中的值赋给.h文件变量.

每当我这样做,它都行不通.我做得对吗?

this.computerName = computerName;  
this.cores=cores;
Run Code Online (Sandbox Code Playgroud)

Eti*_*tel 6

在C++中,this是一个指针,所以它将是:

this->computerName = computerName;
this->cores = cores; 
Run Code Online (Sandbox Code Playgroud)

  • @nikeunItd,@ Matrin:如果问题是为什么`this`是一个指针而不是一个引用,答案是引用进入C++的时间晚于`this` (3认同)

Joh*_*itb 5

而不是赋值,使用初始化

Computer::Computer(string computerName, int cores) 
  :computerName(computerName), cores(cores) 
{  
    ...  
}  
Run Code Online (Sandbox Code Playgroud)

是的有效.构造函数初始化列表具有确切的目的.


Lig*_*ica 5

如果您发布了实际的错误消息,而不仅仅是说"它不起作用",那么很明显该问题与变量名称无关!

this是一个指针,所以你应该使用->运算符,而不是..

this->computerName = computerName;
this->cores = cores;
Run Code Online (Sandbox Code Playgroud)

另外,建议通过引用而不是值来接受字符串,你应该更喜欢初始化而不是赋值; 稍后你会发现有些东西(特别是常量)你实际上必须这样做:

class Computer {
private:
    std::string computerName;
    int cores;
}

Computer::Computer(const std::string& computerName, int cores)
   : computerName(computerName)
   , cores(cores)
{}
Run Code Online (Sandbox Code Playgroud)