Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Как реализовать operator*()


Автор: dix75 1.5.2009, 16:24
всем привет!

Код
class Base
{
private:
  TStrings* owner;
  int       index;
public:
  explicit Base(TStrings*  Owner, int Index =0) : owner(Owner), index(Index) {}
  String& operator*() const {return owner->operator [](index);}
}


Не могу правильно написать operator*() чтобы он возращал ссылку на String? но это не возможно тем способом которым я написал.

А как можно это сделать? 

Автор: dix75 2.5.2009, 20:53
че никто не знает

Автор: 586 3.5.2009, 00:29
Класс TStrings не возвращает ссылок на String. Двухсторонней связи не будет.

Автор: dix75 3.5.2009, 17:15
586
так это я знаю

Автор: dumb 5.5.2009, 05:37
а чего тогда не понятно? - ты можешь только копировать строку из коллекции и возвращать ссылку на свою копию. если копирование делается один раз, то хоть какой-то смысл в возврате ссылки есть, если же копировать нужно каждый раз при обращении к оператору, то проще сразу возвращать const String. а вообще, то ли пример у тебя какой-то неудачный, то ли использование оператора "притянуто за уши".
Код

class Base
{
private:
  TStrings* owner;
  int       index;
  String holder;
public:
  explicit Base(TStrings*  Owner, int Index =0) : owner(Owner), index(Index) {holder=(*owner)[index];}
  const String& operator*() const {return holder;}
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)