все!Я не знаю, правильное ли здесь слово «переопределено».В моем классе программирования я должен создать круговой список, такой, что каждый узел узла содержит указатель, указывающий на следующий узел, а последний узел указывает на первый узел.Кроме того, есть хвостовой узел, который указывает на последний добавленный узел (его ноль до добавления каких-либо узлов).
Я не могу заполнить свой список (называемый кольцом), потому что каждый раз, когда я вызываю Ring ::Функция Insert (const int & d), которая вставляет один узел и попадает в строку «RingNode newNode (d);», новый объект RingNode перезаписывает предыдущий объект RingNode, который был создан, когда я последний раз вызывал Ring :: Insert(const int & d) функция.Очевидно, я не хочу этого, потому что это портит мой список.Как сделать так, чтобы каждый раз, когда функция создавала новый объект RingNode, он не мешал предыдущим объектам RingNode?
Исходный код из моего заголовочного файла, на всякий случай:
class RingNode {
public:
RingNode(const int& i=0 ): data(i), next(NULL){}
private:
int data; /* ID of player */
RingNode* next;
friend class Ring;
А вот и рассматриваемая функция
RingNode* Ring::Insert(const int& d){
RingNode newNode(d); //This line overwrites previous RingNode objects
RingNode* refNode = &newNode; //Probably bad form, but that's not my main concern right now
if (tail==null){
tail = refNode;
newNode.next = refNode;
return refNode;
}
newNode.next = (*GetTail()).next;
(*GetTail()).next = refNode;
tail = refNode;
return refNode;
}
Так, например, если я выполню следующий фрагмент в моем главном ...
Ring theRing;
theRing.Insert(5);
theRing.Insert(2);
theRing.Insert(7);
Если я отладлю свой проектЯ вижу, что кольцо содержит только один RingNode, сначала это 5 RingNode, затем 2 RingNode перезаписывает его, затем 7 RingNode перезаписывает это.Спасибо за чтение и двойное спасибо за ваши ответы!
РЕДАКТИРОВАТЬ: я заменил
RingNode newNode(d);
RingNode* refNode = &newNode;
на
RingNode *newNode = new RingNode(d);
настроил остальную часть кода, и он работает правильно,Большое спасибо за помощь, ребята!Очень информативно и лучше всего я теперь понимаю , почему это испортилось.