這裏是我的代碼:如何調用類是在C++中另一個類中的構造函數?
template<class Datatype>
class Node
{
public:
Node()
{
next = NULL;
prev = NULL;
}
Node* getNext()
{
return next;
}
Node* getPrev()
{
return prev;
}
Datatype* getData()
{
return &data;
}
void changeNext()
{
next = NULL;
}
void changeNext(Node& nextNode)
{
next = &nextNode;
}
void changePrev()
{
prev = NULL;
}
void changePrev(Node& prevNode)
{
prev = &prevNode;
}
Node* addNext(Node &);
Node* addPrev(Node &);
void nodeDel();
void addData(Datatype &);
private:
Node* next;
Node* prev;
Datatype data;
};
template<class Datatype>
class Stack
{
public:
Stack()
{
node.Node();
}
int push(Datatype &);
Datatype pop();
Datatype* peek();
private:
Node<Datatype> node;
};
的編譯錯誤是這樣的:
my_node.h: In constructor ‘Stack<Datatype>::Stack() [with Datatype = float]’:
test.cpp:8:15: instantiated from here
my_node.h:58:4: error: invalid use of ‘Node<float>::Node’
在開始時,我沒有寫的構造函數棧。但是,我覺得實際上由我定義的節點的構造函數沒有被調用,因爲next和prev指針中有一些值。所以我試着寫一個Stack的構造函數,它明確地調用Node的構造函數。不幸的是,上面顯示的編譯錯誤出現了。我想知道如何調用另一個類中的類的構造函數。
感謝, 凱文周
哦,是的。我認爲把節點的指針有更好的! –
這是我的考慮。 Node類可能用於實現其他數據結構,所以我試圖使其更通用。這就是爲什麼有兩個指針指向兩個方向。 –
@ user3352668它不是堆疊的合適的節點結構。這只是一個糟糕的設計。 –