Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2013, 19:44   #1
riden
Новичок
Джуниор
 
Регистрация: 21.10.2011
Сообщений: 1
По умолчанию operator char*() + operator[](uint)

Не понимаю, почему этот пример не компилируется и почему выдаёт эту ошибку.
Код:
#include <iostream>
using namespace std;
typedef unsigned int uint;
class A{
public:
   operator char*(){
      return "ff";
   }
   uint operator[](uint n){
      return n*2;
   }
};
void main(){
   A* a = new A();
   int t = (*a)[1];
}
error C2666: 'A:perator []' : 2 overloads have similar conversions

Последний раз редактировалось riden; 16.02.2013 в 20:13.
riden вне форума Ответить с цитированием
Старый 16.02.2013, 21:57   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Смысл ошибки "2 overloads have similar conversions " как-то до меня не доходит, но возвращать "tt", который является const char* как не-const char* точно нехорошо.
Somebody вне форума Ответить с цитированием
Старый 16.02.2013, 22:03   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Переделайте аргумент operator[](uint n) на int...
Либо когда вызываете этот оператор передавайте аргумент типа uint.
Ошибку, которую выдает компилятор означает, что компилятор не может решить какой operator[] надо вызвать - у указателей он тоже есть, встроенный.
waleri вне форума Ответить с цитированием
Старый 17.02.2013, 08:45   #4
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

http://liveworkspace.org/code/QDttY$3
_Bers вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
operator++ prikolist Общие вопросы C/C++ 17 15.01.2013 16:17
operator== stenl1 Общие вопросы C/C++ 11 27.07.2011 06:38
ошибка: no match for ‘operator<<’ in ‘std::operator<< [with _Traits = std::char_traits<char> Critter Общие вопросы C/C++ 5 08.08.2010 23:38
operator() в С++ Andrey995 Помощь студентам 4 01.08.2010 03:26
Operator C++ EfiopianDIMON Общие вопросы C/C++ 1 13.12.2008 16:52