Это несвязанный вопрос о коде в этом вопросе относительно следующей функции шаблона.
template <class T>
class Object : public Container {
public:
T& object;
Object(const T& obj) : object(obj) {}
};
Это код, вызывающий конструктор:
template <class T>
void Array::add_element(const T& element)
{
vec.push_back(new Object<T>(element));
}
Этот код компилируется отлично, но как только я добавляю строку в main
, которая ее вызывает:
Array array;
int i = 3;
array.add_element(i);
Я получаю предупреждение о компиляторе: error: invalid initialization of reference of type 'int&' from expression of type 'const int'
.
Что это значит? Я передал int
дюйм. Разве он не должен автоматически превращаться в const int&
для меня? Почему компилятор жалуется?