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

时间:2011-01-02 23:13:35

标签: c++ function this

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

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

//computer.cpp  
Computer::Computer(string computerName, int cores)  
{  
    ...  
}  

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

每当我这样做时,它都不起作用。我做得对吗?

this.computerName = computerName;  
this.cores=cores;

4 个答案:

答案 0 :(得分:6)

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

this->computerName = computerName;
this->cores = cores; 

答案 1 :(得分:5)

使用初始化

而不是赋值
Computer::Computer(string computerName, int cores) 
  :computerName(computerName), cores(cores) 
{  
    ...  
}  

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

答案 2 :(得分:5)

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

this是一个指针,因此您应该使用->运算符,而不是.

this->computerName = computerName;
this->cores = cores;

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

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

Computer::Computer(const std::string& computerName, int cores)
   : computerName(computerName)
   , cores(cores)
{}

答案 3 :(得分:-2)

你要两次声明相同的变量。

只需将其更改为Computer::Computer(string computerName, unsigned int numCores),而不是uusing和int,我会使用unsigned int。

在C ++中,this-> cores == cores