2015-12-05 5 views
0

Моя программа работает нормально и делает то, что она должна делать, но используемая нотация не кажется мне правдой. У меня есть класс с некоторыми переменными и двумя функциями:вызов функции класса внутри другой функции класса C++

foo.h

class foo{ 
private: 
    int a; 
public: 
    void seta1(int value); 
    void seta2(int value); 
}; 

foo.cpp

void foo::seta2(int value) 
{ 
    a = value; 
} 

void foo::seta1(int value) 
{ 
    seta2(value); 
} 

тогда, когда я печать переменной а имеет значение его должны иметь, но не будут ли эти обозначения более правильными?

void foo::seta2(int value) 
{ 
    this.a = value; 
} 
+0

Что вы думаете неправильно с синтаксисом и почему? – MrEricSir

+0

'this.a' не будет компилироваться, поэтому он уже« менее корректен ». –

+0

@MrEricSir У меня было странное чувство, что это может быть неверно, так как я начал изучать Java. – Cynizm

ответ

4

Номер this является указателем, а не ссылкой.

this->a = value будет правильным.

В данном случае подразумевается (a нестатический элемент, к которому обращаются в нестатической функции-члене). Есть некоторые обстоятельства, когда требуется this->, но это не один из них.

+0

спасибо, вот что мне нужно знать. – Cynizm

2

Фактически это должно быть this->a, так как это указатель. однако вам не нужно обычно писать «это», поскольку это подразумевается. оба правильные.

Это полезно, только если переменная-член переопределена локальной переменной.

Например:

void foo::seta2(int a) 
{ 
    this->a = a; 
} 
Смежные вопросы