32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 878

Как правильно перегрузить оператор [] =

02.07.2014, 18:39. Показов 4380. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
вот например в классе хранится массив, и допустим я хочу елементу массива в этом классе присвоить другое значение, тоесть так,
C++
1
2
class Var;
Var[] = 5;
или
C++
1
Var[6] = 10;
как правильно перегрузить оператор [] = чтобы так сделать??
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.07.2014, 18:39
Ответы с готовыми решениями:

Как правильно перегрузить оператор для шаблона класса
Имеется такой шаблон: template<int Low = 0, int High = 1000> class Diapazon { }; Внутри него много всего, что уже работает,...

Как правильно перегрузить оператор умножения числа на матрицу?
У меня возникла такая проблема я не могу перезагрузить оператор умножения числа на матрицу, матрицу на число я умножил верно, а вот число...

Std::set с кастомным классом, как правильно перегрузить оператор < ?
Доброго времени суток, у меня имееться такой класс: class Truck { public: size_t getNumber(); Truck() =...

36
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
07.07.2014, 14:30
Студворк — интернет-сервис помощи студентам
Причём тут PHP? Это другой язык.

Перегрузить оператор "<<". Хотя если простой тип возвращает, то и так должно работать.
0
32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 878
07.07.2014, 14:49  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Причём тут PHP? Это другой язык.
как причём? пхп написан же на с++

Цитата Сообщение от nmcf Посмотреть сообщение
Перегрузить оператор "<<". Хотя если простой тип возвращает, то и так должно работать.
а с перегрузкой проблемы, так оно не возвращает, потомучто функция [] возвращает ссылку, и если я пишу например
Var a;
a[1] = 8;
cout<<a[1];

то во время cout, обнуляется значение.

и как в даном случае правильно прегрузить оператор << я не знаю, я понимаю как перегрузить его для класса, но как для ссылки хз
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
07.07.2014, 15:10
пхп написан же на с++
Ну и что? Они никак не связаны.

Программу покажи. Так не ясно.
0
32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 878
07.07.2014, 15:20  [ТС]
прикрепил файл
Вложения
Тип файла: zip file.zip (7.7 Кб, 4 просмотров)
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
07.07.2014, 15:36
Так сделай
C++
1
ostream & operator << (ostream& out, const Var& cl){
0
32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 878
07.07.2014, 15:39  [ТС]
у меня так и было, ток серовно неработает
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
07.07.2014, 16:20
Реализация Array мне не понятна. Что предполагается хранить в l_info? Указатель на динамический массив структур или на список? Вот это что вообще должно возвратить?
C++
1
2
3
4
5
6
7
8
9
10
Var & Array::operator [] (Var _value){
 
    L_info l_info = new Info;
    l_info->key = _value;
    l_info->Link = this->l_info;
    this->l_info = l_info;
    this->count_struct++;
    return l_info->value;
 
}
Почему Var в индексе? Как по нему искать-то?
0
32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 878
07.07.2014, 16:58  [ТС]
Var - это класс-тип данных который хранит все типы, к нему обращаемся также как и к рбычному типу( int char и тд)

в l_info хранится адрес на следующею структуру(это реализация стека)

и сама фунуия возврвщает ссылку на адрес который который хранит данные типа Var, я через дебагер проверял, всё присваивает правильно, и если выводить через функцию void return_value_of_struct(void); тоже всё ок, хз только как вывести так cout<<a[1];
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
07.07.2014, 17:02
Т. е. у тебя каждый элемент стека это отдельный экземпляр Array?
0
32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 878
07.07.2014, 17:32  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Т. е. у тебя каждый элемент стека это отдельный экземпляр Array?
эмм , непонял вопроса, если я правильно понял то ответ нет, класс хранит ссылку на отдельную структуру, структура на следующею структуру, и тд
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
07.07.2014, 17:43
Тогда где у тебя циклы для перемещения по цепочке структур?
0
32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 878
07.07.2014, 17:45  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Тогда где у тебя циклы для перемещения по цепочке структур?
вот,

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void Array::return_value_of_struct(void){
 
    if(this->l_info){
        L_info time_L_info;
        time_L_info = this->l_info;
        while(time_L_info){
            cout<<this->count_struct;
            cout<<"Key: "<<time_L_info->key;
            cout<<"  ";
            cout<<"Value: "<<time_L_info->value;
            cout<<"\n----------------------------------\n";
            time_L_info = time_L_info->Link;
        }
 
    }
 
}
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
07.07.2014, 17:46
А здесь?
C++
1
2
3
4
5
6
7
8
9
10
Var & Array::operator [] (Var _value){
 
    L_info l_info = new Info;
    l_info->key = _value;
    l_info->Link = this->l_info;
    this->l_info = l_info;
    this->count_struct++;
    return l_info->value;
 
}
0
32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 878
07.07.2014, 17:55  [ТС]
сдесь я создаю новую структуру, присваиваю её переменной Link адрес перед идущей структуры, адрес но которую хранился в класе, а класс теперь указывает на адрес новосозданой, зачем тут циклы? + в конце возвращаю ссылку на переменную хранящию значение которое я изменяю
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
07.07.2014, 21:26
А при чём тут оператор []? Почему не += хотя бы?
0
32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 878
07.07.2014, 22:14  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
А при чём тут оператор []? Почему не += хотя бы?
в php я могу так присвоить
arr[7] = 8;

и также вывести

echo( тотже cout)
echo arr[7]; //выведет 8

так же и тут хочу сделать для удобства
0
32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 878
15.07.2014, 16:47  [ТС]
всё, проблему решил сам,

еще вопрос возник, а я вот написал готовый класс, сегодня узнал про то что такое юникод и wstring и wchar_t

решил что будет лучше если в класссе всё будет хранится в юникоде, мне теперь предётся в ручную всё переписывать( типы , функции и тд) или всё можно сделать как-то проще?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.07.2014, 16:47

Как перегрузить оператор<< и оператор>> ?
Доброго времени суток. Застрял на двух вопросах и не как не могу найти инфу которвя мне помогла бы их решить. вопрос первый. В общем...

Как перегрузить оператор =
ну там чтоб он например сложение делал или чтото другое

Как перегрузить оператор?
Вот написал функцию поиска студента по номеру группы. STL list void find() { setlocale( LC_ALL,&quot;Russian&quot; ); if...

Как перегрузить оператор []?
вообщем есть класс class Point{ private: int color_id, state; public: //constructors Point(); //destructors ...

Как перегрузить оператор << в классе?
Всем привет, есть данный код: #include &quot;pch.h&quot; #include &lt;iostream&gt; #include &lt;string&gt; #include &quot;ccolor.h&quot; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Опции темы

Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru