Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
18 / 18 / 24
Регистрация: 21.06.2014
Сообщений: 147
1

Перегрузка оператора [] в классе

05.01.2018, 23:47. Показов 1116. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
У меня есть класс Array(одномерный массив), и стоит задача перегрузка оператора[].

Реализовать для объектов данного класса перегрузку операции [] (a[i]=k и k=b[i])

И вот я не понимаю что от меня требуется.

Я могу перегрузить так
C++
1
void operator[](int);
но так не могу
C++
1
void operator[](Array&, Array&);
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.01.2018, 23:47
Ответы с готовыми решениями:

Перегрузка оператора '=' в классе
#include <iostream> #include <cstring> using std::cout; using std::endl; class CMessage {...

Перегрузка оператора + в классе матрица
Есть перегрузка оператора = Matrix& operator = (const Matrix &object) { if (array !=...

Перегрузка оператора присваивания в классе
Напишите пожалуйста простой пример перегрузки оператора присваивания в классе и пояснение зачем это...

Перегрузка оператора ==, в классе Матрица
#ifndef MATRIX_H #define MATRIX_H template <class T> class Matrix { public: Matrix(int...

3
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
06.01.2018, 00:00 2
Лучший ответ Сообщение было отмечено Kommersantt как решение

Решение

можно так сделать
C++
1
2
3
4
5
6
7
8
9
    int & operator [] ( int i )
    {
        return *(&x + i);
    }
 
    const int operator [] ( int i ) const
    {
        return *(&x + i);
    }
или

C++
1
2
3
4
5
6
7
8
9
   int  operator[](int i)const
    {
        return (&x)[i];
    }
 
    int  & operator[](int i)
    {
        return (&x)[i];
    }
1
18 / 18 / 24
Регистрация: 21.06.2014
Сообщений: 147
06.01.2018, 01:29  [ТС] 3
Спасибо за ваш ответ, за перегрузку. И всё же у меня возник вопрос, что это за выражение (a[i]=k и k=b[i]) и как его можно использовать?
Допустим у меня 2 массива a и b.
C++
1
2
3
k = b[i];
b[i] = a[i];
a[i] = k;
Я правильно понял?
0
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,939
06.01.2018, 03:06 4
Правильно. Отличия в том, что для k=b[i] достаточно константного значения элемента массива (или константной ссылки), а для a[i]=k нужно возвращать ссылку (неконстантную).
1
06.01.2018, 03:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.01.2018, 03:06
Помогаю со студенческими работами здесь

Перегрузка оператора в шаблонном классе
Здравствуйте! Есть шаблонный класс Array, описывающий массив. Такая проблема: нужно перегрузить...

Перегрузка оператора для структуры в классе
Ошибка overloaded 'operator==' must be a binary operator (has 3 parameters) строка 108. Как...

Перегрузка бинарного оператора << в template классе
Помогите пожалйста люди! не получается перегрузить оператор &gt;&gt; и &lt;&lt; в шаблонном классе выдает...

Перегрузка дружественного оператора вывода в шаблонном классе
Здравствуйте! Я не могу понять как мне правильно сделать перегрузку оператора вывода ввывода в...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru