【发布时间】:2014-03-03 01:56:30
【问题描述】:
这是我的代码:
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’
一开始,我并没有为 Stack 编写构造函数。但是,我感觉实际上我定义的node的构造函数并没有被调用,因为next和prev指针中有一些值。所以我尝试编写一个 Stack 的构造函数,它显式调用 Node 的构造函数。不幸的是,出现了上面显示的编译错误。我想知道如何调用另一个类中的类的构造函数。
谢谢, 周凯文
【问题讨论】:
标签: c++ class constructor