Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Перегрузка операторов стандартных типов


Автор: fippo 15.3.2011, 16:20
Имеется класс vector. В нём реализован оператор умножения для типа double:
Код

vector operator*(double n)

При работе с объектами я могу записать, например, такой код:
Код

vector v1(2,1),v2(0,0);
double a;
v2=v1*a;

Тут всё работает правильно, но когда я пишу наоборот
Код

vector v1(2,1),v2(0,0);
double a;
v2=a*v1;

то компилятор ругается на то что не может найти подходящий оператор, несмотря на то что я реализовал так же перегрузку оператора * вне класса.
Нужен ваш совет.

Автор: KaraKum 15.3.2011, 16:21
Нужно объявить глобальный оператор умножения, который будет принимать два значения: тип double и vector.

Автор: fippo 15.3.2011, 18:01
Спасибо за совет, проблема решена.

Автор: borisbn 15.3.2011, 19:04
fippo, очень не советую называть свои типы, так же, как истандартные - vector, string и т.п.
Называй, хотя бы, с большой буквы

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)