У меня есть требование, где я должен создать сторожевой узел шаблона шаблона. Который нуждается в ссылке на себя
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*/);
}
Выше компилируется и работает нормально. Прости меня, если я упрощаю.
Других решений пока нет …