Мне нужно сделать глубокую копию, правильно ли я использую свой конструктор копирования?
Нет. Чтобы сделать глубокое копирование, вам нужно выделить новое пространство в новом стеке. Это будет выглядеть примерно так:
class LinkedList
{
public:
static LinkedList* Copy(LinkedList* c) {
if(c == nullptr) {
return nullptr;
} else {
return new LinkedList(data, Copy(prevNode));
}
}
};
Эта статическая функция берет любой указатель и создает копию его значения и списка.
Затем внутри вашего стека:
Stack::Stack(const Stack& original)
{
this->topNode = LinkedList::Copy(original.topNode);
}
Делая это таким образом, вы фактически создаете новую память, а не копируете указатель вслепую. Это большая идея глубоких копий.
Если вы все еще не понимаете, как работают глубокие копии, я бы посоветовал обратиться к вашему учебнику или профессору.