built-in C++ operator[(wchar_t *, wchar_t)
От: Kalushin  
Дата: 05.12.05 13:54
Оценка:
Есть класс:

template <class T, int rank> class BaseArray
{
    T& operator[](int i);
};

template <class T> class BaseArray<T, 1>
{

    T& operator[](int i);
};

template <class T, int rank = 1> class Array : public BaseArray<T, rank>
{
};


При попытке обратиться к элементу массива следующим образом:

Array<wchar_t> array(10);
wchar_t a;
a = array[a];


Компилятор выдает сообщение:
error C2666: 'System::BaseArray<T,rank>::operator`[]'' : 2 overloads have similar conversions
with
[
T=wchar_t,
rank=1
]
<Неполный путь к файлу... ???>
or 'built-in C++ operator[(wchar_t *, wchar_t)'

Что за built-in оператор такой?
Re: built-in C++ operator[(wchar_t *, wchar_t)
От: Bell Россия  
Дата: 05.12.05 14:08
Оценка:
Здравствуйте, Kalushin, Вы писали:
Приведенный пример (после исправления ошибок, связанных с видимостью операторов) компилируют Comeau и VC7.1.

K>Что за built-in оператор такой?


wchar_t arr[10];
wchar_t i = 0, r;
r = arr[i];
Любите книгу — источник знаний (с) М.Горький
Re: built-in C++ operator[(wchar_t *, wchar_t)
От: Left2 Украина  
Дата: 05.12.05 17:33
Оценка:
Скорее всего у тебя есть преобразование к указателю на что-нить (к примеру, на T*) — при подготовке тестового примера ты его шлёпнул. Вся проблема в нём.
Re[2]: built-in C++ operator[(wchar_t *, wchar_t)
От: Kalushin  
Дата: 06.12.05 16:41
Оценка:
Здравствуйте, Left2, Вы писали:

L>Скорее всего у тебя есть преобразование к указателю на что-нить (к примеру, на T*) — при подготовке тестового примера ты его шлёпнул. Вся проблема в нём.


Да, так и есть. Теперь все встало на свои места. Большое спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.