Перегрузка оператора присваивания C++

компьютеры программирование C++ ООП

Есть объект некоторого класса, назовём его obj. У этого класса есть оператор [], который возвращает char*. Мне нужно перегрузить оператор = , чтобы можно было сделать так obj[0] = "test" (при этом должен быть доступ к закрытым членам класса, т.к. выполняется перераспределение памяти). Вообще возможно ли так сделать? Сколько пробовал - никак, ибо оператор = не может быть глобальным, а если даже мог бы, то имел бы вид operator= (char*, const char*), то есть не мог бы получить доступ к закрытым членам класса. Как быть?
Ответы:
В этом случае оператор = не нужно перегружать. Достаточно перегрузить []. Ниже пример работающего кода. А вообще, следует посмотреть в сторону стандартных контейнеров map и multimap.
zer0 прав, но перегрузить [] надо так, чтобы он возвращал ссылку на объект std::string в классе.
std::string& operator[](size_t index)
{
   return str_array[index];
}
На сколько я понял Вы хотите сделать свой обработчик присваивания для элементов возвращаемых оператором []. Тогда Вам надо сделать например так:
#include <iostream>


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.