Я пытаюсь выяснить, почему этот оператор доставляет мне проблемы. Я на самом деле позволил 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
C ++: перегрузка = оператор для связанной очереди списка? ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1741549428
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-assignment-operator-overloading/# 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), и я обновлю это, когда получу базовую часть для работы!
Подробнее здесь: [url]https://stackoverflow.com/questions/79496248/c-overloading-operator-for-a-linked-list-queue[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия