У меня есть класс, для которого я написал оператор [], и я хочу, чтобы иногда оператор возвращал int , а иногда struct .
Но компилятор не позволит мне перегрузить оператор, почему?
Там написано: «... не может быть перегружен»
Код:
template <class T> struct part
{ };
template <class T> class LinkedList
{
public:
LinkedList() : size(0), head(0) {}
T& operator[](const int &loc);
part<T>& operator[](const int &loc);
};
template <class T> T& LinkedList<T>::operator[](const int &loc)
{
..a lot of thing which compiles perfectly
}
template <class T> part<T>& LinkedList<T>::operator[](const int &loc)
{
...the same thing but returns struct&.
}