Итак, у меня есть класс-родитель:
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])
не работает.
Если вы хотите вызвать оператор []
для this
, то делается это так:
this->operator[](i);
Да, а зачем вы везде тянете Massive::
? Оно внутри класса ни к чему...
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
В общем, создал заголовочный иcpp файлы
Вечер добрый! Есть двумерный массив, в котором содержится n-ое количество строкКаждая строка представляет собой последовательность нулей...
Вопрос в шапке (C++, Visual Studio 17, Console Application) Сейчас понаедут знатоки которое напишут 2-3 слова "в кратце" но мне нужно ПОДРОБНОСпасибо