0

我需要将第一行更改为: 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() {
}

但我不确定我需要改变的所有内部工作。我只需要更改私有数据成员和公共节点功能吗?

4

3 回答 3

1

我认为您正在寻找的是以下内容:

template<typename T>
class Node
{
private:
    T data;
    Node* next;
public:
    Node(const T& d);
    virtual ~Node();
    // ... etc
};

请注意,您需要在同一个文件中内联实现模板类,或者在头文件的底部包含实现。

于 2013-10-08T23:11:21.677 回答
1

关键是你改变你的类,以便它可以以相同的方式用于其他类型double,例如intfloat等等。如果我们更抽象地考虑它,您需要使用类型对象的类T,其中T可以是上面提到的任何类型(甚至更多)。所以,一般来说,你需要template <class T>在你的类之前放置(将其设置为模板类)并替换doubleT类型。

于 2013-10-08T23:15:45.953 回答
0

对于类声明:

template<typename T>
class Node

对于类函数实现:

 template<typename T>
 Node<T>::Node()
于 2013-10-09T00:22:25.310 回答