Определить узел 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*/);

И я не должен передавать один, это дает мне, что конструктор по умолчанию не доступен.

Мне нужно для создания списка пропуска. Который нуждается в пограничных стражах.

1

Решение

Если я правильно понимаю вашу проблему, кажется, что все, что вам нужно сделать, это определить конструкторы по умолчанию?

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

Выше компилируется и работает нормально. Прости меня, если я упрощаю.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]