2014-02-16 2 views
0

Я создаю стек со следующими атрибутами, и я пытаюсь создать экземпляр-конструктор и оператор присваивания, но я не могу, так как новый объект и старая точка указывают на тот же Память. Пожалуйста помогите.C++ Copy Constructor and Assignment Operator

class Node 
{ 
public: 
    Node(const T& data, Node* n = 0) 
    { 
     element = data; 
     next = n; 
    } 

    T element; 
    Node* next; 
}; 

/* The top of the stack */ 
Node* top; 
+0

Check «[Что такое копирование и своп идиома?] (Http://stackoverflow.com/questions/3279543/what-is- the-copy-and-swap-idiom) « – Drop

ответ

0

Для конструктора копирования сделать это как

Node(const Node& data) 
{ 
    element = data.element; 
    next=new Node(); 
    *next = *data.next; 
} 
+0

Оператор присваивания будет очень похож на код конструктора кода Хамзы ... –

+0

безошибочный сейф: взрывается, если' new' или 'Node()' throws – Drop

+0

Спасибо, человек, моя проблема была в main.cpp, я должен был сказать Stack * newStack = new Stack (* oldStack); – Thabang