![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
fear |
|
||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 16.4.2006 Репутация: 1 Всего: 1 |
компилятор выдаёт ошибку в строке
где str - std::string пишет:
ошибка проподает, при компиляции сторок
или
Это как называется? |
||||||||
|
|||||||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
fear, он же тебе всё объяснил. ambiguous call это называется
|
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Поскольку правый операнд не является char (и при этом равен 0), он может с равным успехом преобразоваться как к указателю, так и к char. Вот тебе и неоднозначность.
Когда ты пишешь unsigned char(1), то к указателю это преобразовать нельзя, вот и остается только один вариант. -------------------- ... |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Модератор: Название темы должно отражать ее суть!
|
|||
|
||||
fear |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 16.4.2006 Репутация: 1 Всего: 1 |
больше не буду Добавлено @ 11:14
Как это может преобразоваться к указателю, в моём понимании unsigned char(0) вызывает конструктор класса unsigned char и инициализирует, созданный объект нулём, или я не прав? |
||||
|
|||||
LPBOY |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 12.7.2005 Репутация: 20 Всего: 20 |
Во-первых у встроенных типов нет конструкторов, не слушай ты этих Элджеров...
Можно привести аналогичный пример:
Здесь происходит разрешение перегрузки. Выбирается функция, которая лучше всего подходит. При вызове функции 1, должно произойти преобразование (integral conversion) unsigned char -> char, а при вызове 2-й функции преобразование "null pointer constant" -> char*. Оба вида преобразований имеют одинаковый ранг, поэтому возникает неоднозначность. Если передавать в функйию не unsigned char, а просто char, то при вызове 1-й функции будет иметь место точное соответствие, что лучше чем любое преобразование, поэтому она и будет выбрана. --------------------
Каждый человек по-своему прав, а по-моему нет... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |