ошибка :неверная инициализация ссылки типа 'int&' из выражения типа 'const int'

Это несвязанный вопрос о коде в этом вопросе , касающемся следующей функции шаблона.

template 
class Object : public Container {
public:
    T& object;

    Object(const T& obj) : object(obj) {}
};

Это код, который вызывает конструктор:

template 
void Array::add_element(const T& element)
{
    vec.push_back(new Object(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&для меня? Почему компилятор жалуется?

12
задан Community 23 May 2017 в 12:16
поделиться