在下面的鏈接列表中,我試圖實現一個打印功能。該函數是模板化的,不屬於Node類的一部分。C++:簡單節點/鏈接列表
基本上我希望這個打印功能是動態的,這樣我就不必手動打印出所有的Node->data
。我沿着這個例子中的線樣的工作:http://www.cstutoringcenter.com/tutorials/cpp/cpp17.php
然而,當我嘗試實現打印功能我得到的編譯器錯誤如: node was not declared in this scope
,p' was not declared in this scope
和variable or field 'print' declared void
。
這裏是我的程序:
#include<iostream>
using namespace std;
template<typename T>
class Node
{
public:
Node(T = 0);
~Node() { delete [] nextPtr; };
T getData() const;
Node<T>*& getNextPtr() { return nextPtr; };
private:
T data;
Node<T> *nextPtr;
};
//CONSTRUCTOR
template<typename T>
Node<T>::Node(T newVal)
: data(newVal), nextPtr(NULL)
{
//EMPTY
};
//GETDATA() -- RETURN DATA VALUE
template<typename T>
T Node<T>::getData() const
{
return data;
};
//PRINT FUNCTION
template<typename T>
void print(node<T>* p)
{
while(p)
{
cout << p->data();
p = p->link();
}
};
int main()
{
Node<int> intNode1(5), intNode2(6), intNode3(7);
intNode1.getNextPtr() = &intNode2;
intNode2.getNextPtr() = &intNode3;
print(&intNode1);
system("pause");
}
我在做什麼錯?
錯字錯誤。在打印功能中應該是'Node * p'而不是'node * p'。編輯:其實,你有更多的錯誤比。編輯2:只是注意到你正在返回一個指針的引用。 –