我需要将第一行更改为:template <class T> class Node{
class Node {
private:
double data;
Node* next;
public:
Node(double);
virtual ~Node(); //for later use of polymorphismi, review the topic again
friend class Stack; // allows dStack for private member access
};
Node::Node(double data) {
this->data = data;
next = 0;
}
Node::~Node() {
}
但我不确定我需要改变的所有内部工作。我只需要更改私有数据成员和公共节点功能吗?
答案 0 :(得分:1)
我认为您正在寻找的是以下内容:
template<typename T>
class Node
{
private:
T data;
Node* next;
public:
Node(const T& d);
virtual ~Node();
// ... etc
};
请注意,您需要在同一文件中内联实现模板类,或者在头文件的底部包含实现。
答案 1 :(得分:1)
重点是您更改了类,以便它可以以相同的方式用于除double
之外的其他类型,例如int
,float
等。如果我们更抽象地考虑它,则需要将类用于T
类型的对象,其中T
可以是上面提到的任何类型(甚至更多)。
因此,通常,您需要在课前放置template <class T>
(将其设置为模板类),并将double
替换为T
类型。
答案 2 :(得分:0)
用于类声明:
template<typename T>
class Node
用于类函数实现:
template<typename T>
Node<T>::Node()