C ++ повторно использует то же имя переменной в файле .h в функции (this.variable = переменная ошибка?) - PullRequest
0 голосов
/ 03 января 2011

У меня есть имя переменной в моем .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 ]

6 голосов
/ 03 января 2011

В C ++ this - это указатель, поэтому он будет:

this->computerName = computerName;
this->cores = cores; 
5 голосов
/ 03 января 2011

Если бы вы опубликовали реальное сообщение об ошибке, а не просто сказали «оно не работает», станет ясно, что проблема не имеет никакого отношения к именам переменных!

this - указатель, поэтому вы должны использовать оператор ->, а не ..

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

Кроме того, желательно принимать строки по ссылке на const, а не по значению, и вы действительно должны предпочесть инициализацию, а не присвоение; позже вы обнаружите, что для некоторых вещей (в частности, констант) у вас на самом деле есть , чтобы сделать это:

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

Computer::Computer(const std::string& computerName, int cores)
   : computerName(computerName)
   , cores(cores)
{}
5 голосов
/ 03 января 2011

Вместо назначения используйте инициализацию

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

Да, это работает.Списки инициализатора конструктора имеют именно эту цель.

0 голосов
/ 03 января 2011

вы объявляете одну и ту же переменную дважды.

просто измените ее на Computer::Computer(string computerName, unsigned int numCores), и вместо использования и int я бы использовал беззнаковое целое.

в C ++, это-> ядра == ядра

...