我有一个要求,我必须创建模板类的sentinel节点。哪个需要参考自己
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*/);
我不必传递一个,它告诉我默认构造函数不可用。
我需要创建一个跳过列表。这需要边界哨兵。
答案 0 :(得分: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*/);
}
以上编译并运行正常。如果我过于简单化,请原谅我。