Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
MrAndrey_ka
78 / 78 / 2
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
#1

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

07.04.2013, 00:58. Просмотров 483. Ответов 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" (C++):

Перегрузка операторов: "operator #" - C++
Здравствуйте, подскажите пожалуйста. перегрузка оператора выглядит: void operator # (int i) В учебнике Шилдт перед словом operator...

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

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

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

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

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно". Я так...

1
DU
1483 / 1129 / 45
Регистрация: 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
Привет! Вот еще темы с ответами:

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

Ошибка "sin: неоднозначный вызов перегруженной функции" - C++
Доброго времени суток! Объясните, пожалуйста, что означает ошибка &quot;sin: неоднозначный вызов перегруженной функции&quot;, уже не в первый раз...

Expected init-declarator before "operator".expected `,' or `;' before "operator" - C++
Пример не мой. Пытаюсь у себя запустить и чтото неполучается. Ошибка на строке 24 Expected init-declarator before &quot;operator&quot;.Expected...

Ошибка при преобразовании числа в строку: "неоднозначный вызов перегруженной функции" - C++
вот сокращенный код #include &lt;iostream&gt; #include &lt;string&gt; #define N 5 using namespace std; struct charact...


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

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

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