|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,702
|
|||||||||||||||||||||
Есть два перегруженныйх оператора *, но компилятор не может выбрать нужный, почему?26.06.2012, 16:06. Показов 2764. Ответов 23
Метки нет (Все метки)
ВЫбирать надо
++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++= Проблема почему-то исчезает если закомментить также
0
|
|||||||||||||||||||||
| 26.06.2012, 16:06 | |
|
Ответы с готовыми решениями:
23
Как выбрать нужный компилятор для сборки в Qt Creator? Почему компилятор жалуется на неправильное использование оператора ?: Почему компилятор ругается на то, что класс не объявлен при использовании оператора если? |
|
577 / 256 / 18
Регистрация: 29.11.2010
Сообщений: 868
|
|
| 26.06.2012, 16:21 | |
|
у меня этот код выдает такую ошибку
main.cpp|12|error: 'klass klass::operator*(const int&, klass&)' must take either zero or one argument| что неудивительно, как вы такой оператор использовать собираетесь?
0
|
|
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,702
|
|||||||
| 26.06.2012, 16:29 [ТС] | |||||||
0
|
|||||||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|||||||||||
| 26.06.2012, 16:38 | |||||||||||
То есть вот так вот все должно работать:
1
|
|||||||||||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
||
| 26.06.2012, 18:20 | ||
|
Хм, интересное поведение. Мне компилятор сказал следующее:
klass operator*(const klass&, const class&) и klass operator*(const int&, klass&) В месте вызова для первого имеется два точных соответствия, для второго преобразование и точное соответствие, т.е. по идее компилятор должен считать первый вариант лучшим и вызывать именно его... Помогайте найти в стандарте соответствующий пункт))
0
|
||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 26.06.2012, 18:45 | |
|
Я сам тоже искал причину, но так до конца и не понял. GCC при этом пишет еще и о неком встроенном операторе operator*(float, float):
main.cpp:32:18: error: ambiguous overload for 'operator*' in 'h * h_' main.cpp:32:18: note: candidates are: main.cpp:32:18: note: operator*(float, float) <built-in> main.cpp:19:8: note: klass klass::operator*(const klass&) main.cpp:24:15: note: klass operator*(const int&, klass&)
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 26.06.2012, 18:50 | |
|
Toshkarik, хм, мой gcc 4.7.1 говорит только о двух кандидатах - оба рукописные...
0
|
|
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 26.06.2012, 19:02 | |
|
У меня MinGW на том же GCC 4.7.1.
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 26.06.2012, 19:04 | |
|
омг, у меня тоже мингв... А на какой код у вас эти сообщения выдаются?
0
|
|
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|||||||||||
| 26.06.2012, 19:17 | |||||||||||
|
Вот на такой, скопировал как есть:
Немного отформатировал пример, что бы было понятнее:
0
|
|||||||||||
|
What a waste!
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
|
|||
| 26.06.2012, 19:20 | |||
|
Добавлено через 41 секунду
0
|
|||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 26.06.2012, 19:21 | |
|
Да, это я уже подправил, мой косяк был.
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 26.06.2012, 19:24 | |
|
Toshkarik, и всё равно у меня только два кандидата... Но суть не в том, всё же интересно, почему компилятор не может разрешить перегрузку.
0
|
|
|
What a waste!
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
|
||||||
| 26.06.2012, 19:26 | ||||||
|
Кстати, если main такой, то всё ок:
0
|
||||||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 26.06.2012, 19:27 | |
|
А, стоп. Он может разрешить перегрузку. Я даже не заметил, что исполняемый файл создаётся, и что это только варнинг. Но всё же не понятно, откуда стандарт берёт неоднозначность при разрешении (видимо, gcc руководствуется дополнительными правилами в данном случае и всё-таки вывозит).
0
|
|
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 26.06.2012, 19:41 | |
|
Я без -Werror компилирую и у меня именно ошибка получается.
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 26.06.2012, 19:47 | |
|
Toshkarik, да, с -pedantic действительно будет ошибка. Без него у меня исполняемый файл создаётся.
0
|
|
|
What a waste!
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
|
|
| 26.06.2012, 19:47 | |
|
0
|
|
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 26.06.2012, 19:59 | |
|
Да, с -pedantic.
Добавлено через 7 минут Вот, что получается если еще перегрузить приведение к int: main.cpp:69:21: error: ambiguous overload for 'operator*' in 'h * h_' main.cpp:69:21: note: candidates are: main.cpp:69:21: note: operator*(int, int) <built-in> main.cpp:69:21: note: operator*(int, float) <built-in> main.cpp:69:21: note: operator*(float, int) <built-in> main.cpp:69:21: note: operator*(float, float) <built-in> main.cpp:50:11: note: someClass someClass::operator*(const someClass&) main.cpp:54:11: note: someClass operator*(int, someClass&)
0
|
|
|
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||
| 27.06.2012, 22:25 | ||
|
VS такое выдаёт:
0
|
||
| 27.06.2012, 22:25 | |
|
Помогаю со студенческими работами здесь
20
Что выбрать 9800GTX+ или GTS250? А может есть и другие альтернативы? Выбрать из бд строку, если есть хотя бы 1 ключ, ключей может быть много Замена материнской платы. Есть два варианта. Что выбрать? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Ниже машинный перевод статьи The Thinkpad X220 Tablet is the best budget school laptop period .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы,. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|