戻り値/参照に問題があります。テンプレート (キュー) を作成しています。Front()
関数はキューの先頭から要素を返すことになっていますが、エラー -- が発生しますNo viable conversion from 'Queue<int>::Node' to 'const int'
。を削除するconst
と、代わりに取得Non-const lvalue reference to type 'int' cannot bind to a value of unrelated type 'Queue<int>::Node'
され、参照/参照なし、const/no const の他のバリエーションにより、2 つのエラーのいずれかが返されます。私は何が欠けていますか?
#include <iostream>
using namespace std;
template <typename T>
class Queue
{
friend ostream& operator<< (ostream &, const Queue<T> & );
private:
class Node
{
friend class Queue<T>;
public:
Node(const T &t): node(t) {next = 0;}
private:
T front;
T back;
T node;
Node *next;
};
Node *front;
Node *back;
public:
Queue() : front(0), back(0) {}
~Queue();
bool Empty()
{
return front == 0;
}
T& Front()
{
if (Empty())
cout << "Очередь пуста." << endl;
else
{
T const & temp = *front; // error here
return temp;
}
}
/* ... */
};
template <class T> ostream& operator<< (ostream &, const Queue<T> & );
int main()
{
Queue<int> *queueInt = new Queue<int>;
for (int i = 0; i<10; i++)
{
queueInt->Push(i);
cout << "Pushed " << i << endl;
}
if (!queueInt->Empty())
{
queueInt->Pop();
cout << "Pop" << endl;
}
queueInt->Front();
return 0;
}