Для следующих определений шаблона в моем заголовочном файле,
template<typename T>
class node{
private:
T& data;
shared_ptr<node<T>>& next;
public:
node(T&);
~node();
};
template<typename X>
class list{
private:
shared_ptr<X>& head;
public:
list();
~list();
};
и следующая строка кода в main()
:
list<node<string>>menu;
Я получаю следующую ошибку компиляции для инициализации члена shared_ptr<X>& head
внутри конструктора:
template<typename X>
list<X>::list():head(make_shared<X>(NULL)){
}
error: cannot bind non-const lvalue reference of type "std::shared_ptr<node<std::basic_string<char> > >" to an rvalue of type "std::shared_ptr<node<std::basic_string<char> > >"
list<X>::list():head(make_shared<X>(NULL)){
^
Насколько я понимаю, ошибка связана с попыткой связать значение r, сгенерированное вызовом make_shared()
, с lvalue shared_ptr<X>& head
.
Как я могу устранить эту ошибку?