Вызов перегруженного индексатора

163
17 апреля 2018, 04:28

Итак, у меня есть класс-родитель:

class Massive
{
public:
    virtual Massive* Clone() = 0;
    virtual int Massive::operator[](int i) = 0;
};

(я не стал писать сюда прочие методы типа Add, Delete, а оставил только нужные)
И дочерний класс односвязный список:

class MyList:public Massive
{
public:
    virtual MyList* Clone() override
    {
        MyList *new_mas = new MyList();
        for (int i = 0; i < count; i++)
        {
            element *temp = last;
            while (temp->index != i)
            {
                temp = temp->prev;
            }
            new_mas->Add(temp->value);
        }
        return new_mas;
    }
    virtual int Massive::operator[](int i) override
    {
        if (count != 0)
        {
            element *temp = last;
            while (temp->index != i)
            {
                temp = temp->prev;
            }
            return temp->value;
        }
        else
        {
            std::cout << "Error. Massive is empty.\n";
        }
    }
};

Так вот, в методе Clone() я скопировал код с перегруженного индексатора ибо мне надо найти пройтись по каждому элементу и добавить их в новый объект. Можно ли обойтись без копирования кода, а написать в Clone() что-то вроде new_mas->Add(this[i])?

Если что, new_mas->Add(this[i]) не работает.

Answer 1

Если вы хотите вызвать оператор [] для this, то делается это так:

this->operator[](i);

Да, а зачем вы везде тянете Massive::? Оно внутри класса ни к чему...

READ ALSO
Ошибка &ldquo;Undefined reference to&rdquo; подключённой (!) функции

Ошибка “Undefined reference to” подключённой (!) функции

В общем, создал заголовочный иcpp файлы

169
Сортировка строк двумерного массива

Сортировка строк двумерного массива

Вечер добрый! Есть двумерный массив, в котором содержится n-ое количество строкКаждая строка представляет собой последовательность нулей...

179
Как закрыть процесс не затрагивая его дочерние процессы?

Как закрыть процесс не затрагивая его дочерние процессы?

Вопрос в шапке (C++, Visual Studio 17, Console Application) Сейчас понаедут знатоки которое напишут 2-3 слова "в кратце" но мне нужно ПОДРОБНОСпасибо

189