быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,686
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
Есть два перегруженныйх оператора *, но компилятор не может выбрать нужный, почему?26.06.2012, 16:06. Показов 2354. Ответов 23
Метки нет (Все метки)
ВЫбирать надо
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++= Проблема почему-то исчезает если закомментить также
0
|
26.06.2012, 16:06 | |
Ответы с готовыми решениями:
23
Как выбрать нужный компилятор для сборки в Qt Creator? Почему компилятор жалуется на неправильное использование оператора ?: Почему компилятор ругается на то, что класс не объявлен при использовании оператора если? Почему без приведения типа невозможно выбрать нужный указатель на перегруженную функцию-член? |
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
|
|||||||||||
28.06.2012, 01:05 | 21 | ||||||||||
Сообщение было отмечено как решение
Решение
Итак, у нас есть функция член
Всё довольно просто. Чтобы вызвать первую функцию первый аргумент подходит идеально, а для второго надо сделать преобразование someClass & => someClass const& Чтобы вызвать вторую функцию, наоборот, идеально подходит второй аргумент, а для первого надо выполнить преобразование someClass => float => int То есть для первой функции лучше подходит первый аргумент, а для второй — второй. Это и вызывает неоднозначность. Что делать? Чтобы устранить неоднозначность надо второй аргумент сделать одинаковым. То есть либо в глобальной функции сделать ссылку ссылкой на константу, либо в функции-члене убрать const или вовсе использовать передачу второго аргумента по значению. Да, в этом случае для функции-члена оба аргумента подходят лучше, чем для глобальной функции. Добавлено через 5 минут Что-то похожее на описанное мной есть в 13.3.3.3 стандарта C++03.
3
|
5057 / 3117 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
28.06.2012, 07:28 | 22 |
grizlik78, да, что-то забыл я, что преобразование из не-const в const тоже учитывается при разрешении перегрузки...
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
28.06.2012, 11:30 | 23 | |||||
C++11 легко решает эту проблемку.
2
|
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
|
|
28.06.2012, 11:35 | 24 |
Ну мало ли. Может неявное преобразование к float желательно. А вот делать правый аргумент у этих функций разным большого смысла не вижу.
0
|
28.06.2012, 11:35 | |
28.06.2012, 11:35 | |
Помогаю со студенческими работами здесь
24
Есть два БП. Какой выбрать? Что выбрать 9800GTX+ или GTS250? А может есть и другие альтернативы? Выбрать из бд строку, если есть хотя бы 1 ключ, ключей может быть много Замена материнской платы. Есть два варианта. Что выбрать? Есть данная БД. Нужно написать два запроса на SQL. Может ли кто-то подсказать? Алгоритм Петерсона: почему поток не может два раза подряд выполнить критическую секцию? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Как работать с ветками (branch) в Git
InfoMaster 17.01.2025
Система контроля версий Git произвела революцию в процессе разработки программного обеспечения, предоставив разработчикам мощный инструмент для управления изменениями в коде. Одной из наиболее важных. . .
|
Как откатить последние коммиты в Git
InfoMaster 17.01.2025
Система контроля версий Git стала неотъемлемой частью современной разработки программного обеспечения, предоставляя разработчикам мощные инструменты для управления изменениями в коде. Одним из. . .
|
Что такое boilerplate и scaffold, чем они отличаются
InfoMaster 17.01.2025
В современном мире разработки программного обеспечения эффективность и скорость создания качественного кода играют crucial роль в успехе проектов. Разработчики постоянно ищут способы оптимизировать. . .
|
Чем отличаются ссылки и указатели в С++
InfoMaster 17.01.2025
В современном программировании на C++ эффективная работа с памятью является ключевым аспектом разработки качественного программного обеспечения. Указатели и ссылки представляют собой два. . .
|
В чем разница между PUT и POST
InfoMaster 17.01.2025
В современной веб-разработке правильное использование HTTP-методов играет ключевую роль в создании надежных и эффективных API-интерфейсов. Протокол HTTP прошел долгий путь развития с момента своего. . .
|
DTO, POCO и Value Object: что это такое, когда и как использовать
InfoMaster 17.01.2025
Введение в паттерны передачи данных
В современной разработке программного обеспечения эффективное управление данными и их передача между различными слоями приложения являются ключевыми аспектами. . .
|
Что такое pull request в Git
InfoMaster 17.01.2025
В современной разработке программного обеспечения pull request в Git представляет собой ключевой механизм для эффективного взаимодействия между разработчиками при работе над общим кодом проекта. По. . .
|
Как вернуться к предыдущему коммиту в Git
InfoMaster 17.01.2025
Система контроля версий Git представляет собой мощный инструмент для управления изменениями в программном коде, который позволяет разработчикам эффективно отслеживать и контролировать историю. . .
|
Что такое паттерны программирования и проектирования
InfoMaster 17.01.2025
Роль паттернов в современной разработке программного обеспечения
В современном мире разработки программного обеспечения паттерны проектирования стали неотъемлемой частью профессионального подхода. . .
|
Как добавить конструктор Яндекс Карт на сайт
InfoMaster 17.01.2025
Введение в API Яндекс Карт
В современной веб-разработке интеграция картографических сервисов стала неотъемлемой частью многих проектов. API Яндекс Карт представляет собой мощный инструмент для. . .
|
Что такое javascript:void(0) и зачем это нужно
InfoMaster 17.01.2025
Когда вы сталкиваетесь с веб-разработкой, особенно с использованием JavaScript, одной из директив, которая часто встречается, является javascript:void(0). Это выражение вызывает интерес из-за своей. . .
|
Что такое оркестрация и хореография микросервисов
InfoMaster 17.01.2025
Введение в оркестрацию и хореографию микросервисов
В современном мире разработки программного обеспечения микросервисная архитектура стала ключевым подходом к созданию масштабируемых и гибких. . .
|