void SetTmp1(AnsiString data) {Tmp1 = data;}
void SetTmp2(int data) {Tmp2 = data;}
W8026 Functions taking class-by-value argument
Компилятор варнинг выкидывает при компиляции класса, предполагаю ругается на класс AnsiString, т.к. на вторую строчку не ругается:
Код:
Что я делаю не так?
Цитата:
Originally posted by enola
Добрый вечер!
Компилятор варнинг выкидывает при компиляции класса, предполагаю ругается на класс AnsiString, т.к. на вторую строчку не ругается:
Что я делаю не так?
Добрый вечер!
Компилятор варнинг выкидывает при компиляции класса, предполагаю ругается на класс AnsiString, т.к. на вторую строчку не ругается:
Код:
void SetTmp1(AnsiString data) {Tmp1 = data;}
void SetTmp2(int data) {Tmp2 = data;}
void SetTmp2(int data) {Tmp2 = data;}
Что я делаю не так?
Судя по сообщению об ошибке, компилятору не нравится, что AnsiString передаётся по значению. Попробуй так:
Код:
void SetTmp1(const AnsiString &data) {Tmp1 = data;}
void SetTmp2(int data) {Tmp2 = data;}
void SetTmp2(int data) {Tmp2 = data;}
2 damarus
Абсолютно законный код, передача по ссылке не обязательна.
Цитата:
Originally posted by honeybeer
Поясните плз что есть Tmp1, Tmp2?
Поясните плз что есть Tmp1, Tmp2?
мда, забыл...
члены класса.
Код:
private:
AnsiString Tmp1;
Int Tmp2;
public:
void SetTmp1(AnsiString data) {Tmp1 = data;}
void SetTmp2(int data) {Tmp2 = data;}
AnsiString Tmp1;
Int Tmp2;
public:
void SetTmp1(AnsiString data) {Tmp1 = data;}
void SetTmp2(int data) {Tmp2 = data;}
Цитата:
Originally posted by enola
мда, забыл...
члены класса.
мда, забыл...
члены класса.
Код:
private:
AnsiString Tmp1;
Int Tmp2;
public:
void SetTmp1(AnsiString data) {Tmp1 = data;}
void SetTmp2(int data) {Tmp2 = data;}
AnsiString Tmp1;
Int Tmp2;
public:
void SetTmp1(AnsiString data) {Tmp1 = data;}
void SetTmp2(int data) {Tmp2 = data;}
Ну собственно говоря, в данном контексте Damarus совершенно прав. Лучше передавать константную ссылку. А варнинг - он на то и варнинг, что бы вы обратили внимание.
Дополню. Варнинг выдаётся именно потому, что класс передаётся по значению. Это конечно допустимо, но работает гораздо медленнее. Ведь необходимо создать локальный экземпляр класса и скопировать в него данные источника. Компилятор на это и обращает внимание.
Цитата:
Originally posted by honeybeer
Ну собственно говоря, в данном контексте Damarus совершенно прав. Лучше передавать константную ссылку. А варнинг - он на то и варнинг, что бы вы обратили внимание.
Ну собственно говоря, в данном контексте Damarus совершенно прав. Лучше передавать константную ссылку. А варнинг - он на то и варнинг, что бы вы обратили внимание.
варнинг это понятно, просто люблю когда проект без них компилится.
спасибо, теперь без них :)