Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
#1

Перезагрузка операторов "неоднозначный operator"

07.04.2013, 00:58. Просмотров 546. Ответов 1
Метки нет (Все метки)

Не знаю в ту ли группу пишу, но все же.... Для моего класса есть несколько операторов присвоения
const MyStr& operator +=(const MyStr& val);
const MyStr& operator +=(const WCHAR *val);
const MyStr& operator +=(const WCHAR val);
const MyStr& operator +=(const char * val);
const MyStr& operator +=(const char val);
const MyStr& operator +=(const int val);

все работает вроди бы нормально, но вот на код
C++
1
2
MyStr s("вапывэпжэ");
s +=s.Length();
ругается error C2593: неоднозначный "operator +="

как это обойт или что я не так написал?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2013, 00:58
Ответы с готовыми решениями:

Перегрузка операторов: "operator #"
Здравствуйте, подскажите пожалуйста. перегрузка оператора выглядит: void...

Перегрузить операторы operator+() и operator*() в пользовательском классе "Комплексное число"
Здравствуйте. Предлагаю заняться арифметикой. Создал прослейший класс,...

Чем "operator *=" отличается от "operator *"?
снова застряла, не могу понять, чем этот оператор должен отличаться от...

Что такое "перегрузка операторов"? Каковы принципы работы перегруженных операторов и назначение указателя this
Добрый день . Помогите понять принцип работы перегрузки операторов. ...

Проблема с перегрузкой операторов "+" и "+=" для классов Point и Circle
Есть класс Point (элементы данных x,y) и класс Circle (элементы данных р(типа...

1
DU
1486 / 1132 / 164
Регистрация: 05.12.2011
Сообщений: 2,279
07.04.2013, 01:11 #2
это зависит от того, что какой тип возвращает функция MyStr::Length();
логично что это какой-то интегральный тип. и вот если он отличается от
char, int или WCHAR, то потребуется преобразование в один из этих типов.
Если такие преобразования равнозначны, значит все три функции могут
подойти для вызова. А это как раз случай неоднозначности.
Компилятор хочет только одну функцию.
в общем нужно либо добавить еще один operator += с типом, совпадающим
с тем типом, который возвращает функция Length, либо явно кастить:
s += static_cast<int>(s.Length());
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2013, 01:11

Класс "Парабола", перегрузка операторов "||" и "/"
класс: парабола y=ax^2+bx+c; Члены класса: Коэффициенты a,b,c; Методы:...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить...

"error C2872: неоднозначный символ" при переменной count
В общем вчера взялся изучать C++ по книге &quot;C++ Базовый курс, 3 издание&quot; Г....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru