Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Перегрузка оператора []


Автор: cerf_machine 7.8.2007, 15:11
Здравствуйте!

Код

int &opearor [](int);

Перегружает оператор [] в том смысле, что можно использовать
Код

int qwerty=object[789]=132;


А реально ли перегрузить его таким образом, чтобы использовать аля-ПХП:
Код

object[]=321;

Чтобы например реализовать добавление очередного элемента в массив?

Благодарю.

Автор: Ln78 7.8.2007, 15:43
cerf_machine, а для тебя принципиально, чтобы в скобках ничего не стояло? Если не сильно, можно использовать обычный
Код

 int &opearor [](int); 

только анализировать, если значение индекса, например, равно -1 (или просто меньше нуля), то выделять при необходимости память (зависит от реализации операций управления памятью) или считать выделенной уже зарезервированную.

Добавлено @ 15:44
Хотя это, конечно, на любителя. ИМХО, понятнее и красивее для этого использовать имя push_back

Автор: Ln78 7.8.2007, 16:01
Опять же на любителя, если хочется со скобками, а писать индекс не хочется, можно использовать другие скобки
Код

  int& operator()(void)

Автор: cerf_machine 7.8.2007, 16:03
Хм... Отвечу вопросом. Стал бы я спрашивать, как делается что-либо, если мне вообще по барабану до этого?

Естественно хотелось бы поиметь пустой "[]". Так то мне ничто не мешает использовать и без того существующий метод Insert().

Автор: Daevaorn 7.8.2007, 16:06
Цитата(cerf_machine @  7.8.2007,  17:03 Найти цитируемый пост)
Естественно хотелось бы поиметь пустой "[]"

нельзя. и смысла мало. функциональной сути никокой это не несет. только услада для глаз и то спорная.

Автор: cerf_machine 7.8.2007, 16:07
Ln78, спасибо, перегружать круглые скобки точно не стоитsmile)

Автор: Ln78 8.8.2007, 06:34
Цитата(cerf_machine @  7.8.2007,  16:03 Найти цитируемый пост)
Отвечу вопросом. Стал бы я спрашивать, как делается что-либо

Отвечаю на вопрос. Я предполагал, что спрашивающий, по крайней мере, именно ту конструкцию попытался оттранслировать и прочитал соответствующие диагностические сообщения компилятора. И только после этого задал вопрос, можно ли сделать нечто подобное. Обычно так и происходит.

Автор: cerf_machine 8.8.2007, 10:03
2Ln78, Конечно я попытался это сделать всевозможными ухищрениями, на что компилер говорил "нет" (точных его слов уже не припомню)...

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