C ++: перегрузка = оператор для связанной очереди списка?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 C ++: перегрузка = оператор для связанной очереди списка?

Сообщение Anonymous »

Я пытаюсь выяснить, почему этот оператор доставляет мне проблемы. Я на самом деле позволил Visual Studio создать для меня определение функции, поэтому я не уверен, почему она расстроена. Есть также проблема с распознаванием моего личного указателя узла «сначала», так что, если вы знаете, почему это расстроено, пожалуйста, дайте мне знать! это публично в шаблоне очереди. < /p>
template
class Queue
{
public:
Queue();
virtual ~Queue();
Queue(const Queue& orig);

Queue& operator=(const Queue& right);

bool enqueue(const ElementType& a);
ElementType peekFront() const;
bool dequeue();
bool isEmpty() const;
int Length() const;

void Display(ostream& out) const;

private:

class Node
{
public:
ElementType data;
Node* next;
};

Node* front;
Node* back;
};

//here's the overloaded operator. Visual Studio is upset with its own created definition...

template
inline Queue& Queue::operator=(const Queue & right)
{
//https://www.geeksforgeeks.org/cpp-assig ... erloading/# referenced for operator
if (first == right.first) //either they point to the same place or both are nullptrs
//either way, nothing left to do
return;
else if (first != nullptr)
{
while (first != nullptr)
dequeue();
} //now left is an empty queue and copies can be made!

Node* p = right.first;

while (p != nullptr)
{
enqueue(p->data); //will insert data into left queue
p = p->next; //moves through right queue
}
front = p; //now front gets p! back should've updated with each enqueue
return;
}
< /code>
Я попробовал несколько разных определений, прежде чем позволить Visual Studio сделать свою собственную. Я попытался поместить функцию в класс и попытался исследовать, почему она не работает. Однако я ничего не поднял. Для проблемы PTR «Первый» узел я в замешательстве, потому что он бросает ошибки, но не добавляет красный подчеркивание ни одному из использования первого. Меня сейчас меньше беспокоит это, только потому, что я думаю, что оператор - большая проблема. Решение оно может решить проблему указателя, но Idk. Во-первых, кажется, что их не спрашивают: если (первый == nullptr), если это помогает. < /p>
отредактировано для добавления: я работаю над домашним заданием-Сорри, я не добавил это изначально. В настоящее время я изучаю C ++, поэтому я прошу прощения за все, что кажется странным/раздражительным. Это должно называться спереди! Тьфу, какая глупая ошибка-это теперь разрешено. Спасибо всем за вашу помощь со всем этим. Я не хотел беспокоить своего профессора на выходных, и вы все были так полезны! В настоящее время я переработаю свой шаблон очереди (на данный момент снимаю elementtype), и я обновлю это, когда получу базовую часть для работы!

Подробнее здесь: https://stackoverflow.com/questions/794 ... list-queue
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»