D
DarkKnight
Народ, возник такой вопрос, раньше как то с этим делом отношение не имел, всегда реализовывал однозначно через ссылку, а сейчас нужно что бы если вызываемый оператор был сугубо для чтения возвращалась константа, иначе так же как делал - ссылка
Вот пример грубый:
Если не понятно немного описал - сорьки... Вот наглядно:
Добавлено: Блин уже и инет глянул... И Страуструпа пролистал....
Но точно такая реализация должна быть, если логика мне не изменяет, в классе string при индексе как раз что то подобное и делается, ну и так же во всех его производных как CString(MFC) и AnsiString (Borland)...
По сути не столь важно конечно, но просто стало жуть как интересно....
Если кто-то все таки сталкивался с такой проблемой просьба отписаться....
Заранее благодарен...
Вот пример грубый:
C++:
class C1
{
private:
int Value[10];
public:
int& operator[] (int Index)
{
return Value[Index];
}
// И как то надо правосторонний реализовать, что бы возвращал константу
//думал выйдет вот так:
// int operator[] (int Index)const
{
return Value[Index];
} //А он "падла", все равно ссылочную реализацию вызывает
}
C++:
C1 C;
const int a = C[2]; //Должно вернуть const int
std::cout<<C[2]; //Тоже const int
C[3]=7; // А вот тут ссылочность уже
Добавлено: Блин уже и инет глянул... И Страуструпа пролистал....
Но точно такая реализация должна быть, если логика мне не изменяет, в классе string при индексе как раз что то подобное и делается, ну и так же во всех его производных как CString(MFC) и AnsiString (Borland)...
По сути не столь важно конечно, но просто стало жуть как интересно....
Если кто-то все таки сталкивался с такой проблемой просьба отписаться....
Заранее благодарен...