1

我有一个要求,我必须创建模板类的哨兵节点。哪个需要参考自己

template <class T1, class T2>
class Node{
   private:
      std::pair<T1, T2> _pair;
      Node * next;
   public:
      Node(std::pair<T1, T2> pair) : _pair(pair){}
};

class Product{
  private:
    int pid;
    std::string name;
  public:
    Product(int id, std::string name):pid(id), name(name){}
}

现在我想做类似的事情

Node<Product, int> *base = new Node<Product, int>(/*which needs an arguement*/);

而且我不必通过一个,它让我默认构造函数不可用。

我需要创建一个跳过列表。这需要边界哨兵。

4

1 回答 1

0

如果我正确理解您的问题,似乎您所要做的就是定义默认构造函数?

#include <string>
#include <utility>

template <class T1, class T2>
class Node{
private:
  std::pair<T1, T2> _pair;
  Node * next;
public:
  Node() {} // EDIT
  Node(std::pair<T1, T2> pair) : _pair(pair){}
};

class Product{
private:
  int pid;
  std::string name;
public:
  Product() {} // EDIT
  Product(int id, std::string name):pid(id), name(name){}
};

int main() {
  Node<Product, int> *base = new Node<Product, int>(/*which needs an arguement*/);
}

以上编译并运行良好。如果我过于简单化,请原谅我。

于 2016-03-10T20:08:32.243 回答