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

Странная перегрузка операторов (Error: ambiguous overload for 'operator[]') - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Заполнить двухмерный вектор таблицей умножения и вывести его в выходной поток http://www.cyberforum.ru/cpp-beginners/thread1223644.html
Заполнить двухмерный вектор таблицей умножения и вывести его в выходной поток. То, что я написал: #include <vector> #include <iostream> #include <iomanip> using namespace std;
C++ Найти общую сумму стоимости всех перевозок и отдельно по каждому виду. Помогите 2 задания зделать полчиса сижу никак зделать не могу тут легко я просто чтота вдуплить не могу 2. Общая сумма стоимости всех перевозок; 3. Сумма стоимости по каждому виду перевозок; ... http://www.cyberforum.ru/cpp-beginners/thread1223605.html
C++ Как объявить массив структур?
Как задать массив в С++? Type gostinica= record FIO:string; nomer:integer; cena: integer; kolvo: integer; itogo:integer; end; Var
Программа, во время выполнения, после ввода, прекращает работу C++
Проблема такая: Предисловие... Недавно я уже обращался сюда на форум из-за того, что с функцией randomize программа не компилировалась. Я, при помощи тех, кто мне помог, определил, как нужно было...
C++ Дать юзеру возможность вводить команды с параметрами http://www.cyberforum.ru/cpp-beginners/thread1223578.html
К утилите прикручена интерактивная оболочка, юзер вводит команду в ответ на которую выполняется некоторый код. Сейчас выглядит так: typedef struct { std::string cmd; void (*function)(void);...
C++ Перевод из десятичной в двоичную систему нужно перевести число из десятичной в двоичную систему! На форуме искал но не подходит! Вот мое творение #include <iostream> using namespace std; void main () { const int N=20; int mas; for... подробнее

Показать сообщение отдельно
Renji
2075 / 1432 / 328
Регистрация: 05.06.2014
Сообщений: 4,151

Странная перегрузка операторов (Error: ambiguous overload for 'operator[]') - C++

07.07.2014, 08:46. Просмотров 377. Ответов 2
Метки (Все метки)

Что-то я туплю. Есть код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include<string>
struct test
{
    int operator[](const std::string&)const{return 0;}
    operator int()const{return 0;}
};
int main()
{
    test t;
    t[""];
    return 0;
}
Компилятор ругается на t[""]; что "error: ambiguous overload for 'operator[]' in 't[""]'". Если убрать operator int, ругань волшебным образом пропадает. В чем собственно дело? operator int на operator [] по идее вообще никак влиять не должен. Не указатель же возвращает.

Если играет роль, в качестве компилятора установлен g++.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru