Вы не можете сделать шаблон из реальных экземпляров объекта, как вы это сделали ... они должны быть ТИПАМИ для объектов, создаваемых функцией шаблона (в данном случае конструктором).
ИтакНапример, вы можете создать объект пары, используя конструктор, например:
pair<int, int>(whereto->value, whereto->adj->value)
, или вы можете создать пару, используя служебную функцию make_pair()
, как показано Майклом.
Но если вы собираетесь использовать конструктор, вам нужно где-то объявить типы, которые заменят типы T1
и T2
в объявлении конструктора, т. Е.
template<typename T1, typename T2>
pair::pair(const T1& object_1, const T2& object_2);
это делается путем объявления объекта с аргументами шаблона для нужных типов объектов (т. е. для пары объектов int
, вы бы использовали pair<int, int>
), а затем вызова фактической функции-члена объекта с объектами этих типов (вв вашем случае это будет конструктор для класса pair
).