Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
fitochay
14 / 14 / 0
Регистрация: 14.03.2015
Сообщений: 102
#1

Перегрузка оператора [] - C++

03.01.2016, 13:05. Просмотров 221. Ответов 7
Метки нет (Все метки)

Здравствуйте. Пробую перегрузить оператор [].

C++
1
2
3
4
5
6
7
8
9
10
11
12
template <class Element>
class List
{
public:
    struct Node
    {
        Element el;
        Node *next;
    };
    Node *head;
    Node* operator [](int);
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
template<class Element>
List<Element>::Node * List<Element>::operator[](int) //тут ошибка
{
    int size = countnodes();
    if (size < int) return NULL;
    int count = 0; Node *temp = head;
    while (count != num) {
        count++;
        temp = temp->next;
    }
    return temp;
}
синтаксическая ошибка: идентификатор "Node"
Что я сделал не так?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2016, 13:05     Перегрузка оператора []
Посмотрите здесь:

Перегрузка оператора + - C++
Всем привет, проблема на этот раз такая. Для того, чтобы выучить классы, я пишу некое подобие класса string. Сложность вот в чем. Возникла...

Перегрузка оператора = - C++
Доброго времени суток,не могу понять в чем проблема. Есть класс,в котором переопределен оператор +, есть массив классов, при попытке...

Перегрузка оператора *= - C++
Переписываю свой матричный калькулятор и решил внести в него перегрузку оператора *= Matrix* Matrix::operator *=(double num){ ...

Перегрузка оператора << - C++
Здравствуйте! Подскажите, пожалуйста, как выполнить перегрузку оператора &lt;&lt;? Для двух классов: class A { public:

перегрузка оператора [] - C++
объясните в 3х словах для ламера в чем смысл перегрузки, конкретно оператора

Перегрузка оператора - C++
Доброго времени суток. Столкнулся с проблемой перегрузки оператора &quot;++&quot; выдает ошибку в первой строке: postfix ‘const Counter...

Перегрузка оператора [][] - C++
добрый день. имею в классе двумерный массив. подскажите как правильно сделать перегрузку к классу, чтоб при ЭкземлплярКлассa...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
_Valera_
486 / 368 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
03.01.2016, 14:48     Перегрузка оператора [] #2
шаблонный класс реализовывается в одном файле

Добавлено через 35 секунд
Цитата Сообщение от fitochay Посмотреть сообщение
Node* operator [](int);
};
Цитата Сообщение от fitochay Посмотреть сообщение
List<Element>::Node * List<Element>::operator[](int
это разные функции
fitochay
14 / 14 / 0
Регистрация: 14.03.2015
Сообщений: 102
03.01.2016, 14:52  [ТС]     Перегрузка оператора [] #3
_Valera_, у меня в одном. а почему разные?
_Valera_
486 / 368 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
03.01.2016, 14:53     Перегрузка оператора [] #4
Цитата Сообщение от fitochay Посмотреть сообщение
_Valera_, у меня в одном. а почему разные?
ну может и одинаковые, я мельком глянул...
fitochay
14 / 14 / 0
Регистрация: 14.03.2015
Сообщений: 102
03.01.2016, 16:34  [ТС]     Перегрузка оператора [] #5
оставил описание в классе. Однако теперь другая ошибка. Перегрузил наверное неправильно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
template <class Element>
class List
{
public:
    struct Node
    {
        Element el;
        Node *next;
    };
    Node *head;
bool isempty();
    void popback();
    Node* operator [](int num) {
        int size = countnodes();
        if (size < int) return NULL;
        int count = 0; Node *temp = head;
        while (count != num) {
            count++;
            temp = temp->next;
        }
        return temp;
    }
};
C++
1
2
3
4
5
6
7
8
9
template<class Element>
inline void List<Element>::popback()
{
    if (!isempty()) {
        int size = countnodes();
        Node *temp = new Node;
        temp = this[size - 1]; //тут ошибка
    }
}
=: невозможно преобразовать "List<Element>" в "List<Element>::Node *"
_Valera_
486 / 368 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
03.01.2016, 16:47     Перегрузка оператора [] #6
Цитата Сообщение от fitochay Посмотреть сообщение
Node *temp
и
Цитата Сообщение от fitochay Посмотреть сообщение
List<Element>
разные типы так и сказано. Хз я так без иде и не скажу...

Цитата Сообщение от fitochay Посмотреть сообщение
void popback() ;
реализация прям на месте должна быть, в классе.

Цитата Сообщение от fitochay Посмотреть сообщение
template<class Element>
inline void List<Element>:: popback()
Цитата Сообщение от fitochay Посмотреть сообщение
template <class Element>
class List

кто сказал что эти типы совпадают?
fitochay
14 / 14 / 0
Регистрация: 14.03.2015
Сообщений: 102
03.01.2016, 16:57  [ТС]     Перегрузка оператора [] #7
_Valera_, про разные типы понятно. Неясно почему, если при перегрузке я возвращаю Node* (мб чего в перегрузке не понимаю);
не вижу особой разницы где описывать метод.
про типы не понял
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2016, 17:23     Перегрузка оператора []
Еще ссылки по теме:

Перегрузка оператора - C++
Здравствуйте! Помогите разобраться с перегрузкой операторов. Суть задания: Осуществите перегрузку оператора “++” так, чтобы при его...

Перегрузка оператора == - C++
Пытаюсь перегрузить оператор == . Делаю так: В классе: class cData // класс дата { int year; // год short mounth; //...

Перегрузка оператора = - C++
Здравствуйте, возникла проблема при перегрузке оператора. const digit &amp;operator=( const int &amp; ); const digit &amp;operator=( const char...

Перегрузка оператора -> - C++
обясните пожалуйста как перегружать -&gt; и для чего это нужно

Перегрузка оператора << - C++
Вот упрощенный вариант моей программы, пересчитывает время в 12-й формат мне нужно перегрузить оператор &lt;&lt; так, чтобы time_cycle_1&lt;&lt;(1);...


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

Или воспользуйтесь поиском по форуму:
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
03.01.2016, 17:23     Перегрузка оператора [] #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от fitochay Посмотреть сообщение
temp = this[size - 1];
C++
1
temp = (*this)[size - 1];
Yandex
Объявления
03.01.2016, 17:23     Перегрузка оператора []
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru