gpt4 book ai didi

c++ - 为模板类定义一个 Sentinel 节点,一个没有默认构造函数的类?

转载 作者:太空宇宙 更新时间:2023-11-04 13:19:17 24 4
gpt4 key购买 nike

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

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*/);

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

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

最佳答案

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

#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*/);
}

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

关于c++ - 为模板类定义一个 Sentinel 节点,一个没有默认构造函数的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35919052/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com