Что означает «недопустимая инициализация неконстантной ссылки»? - PullRequest
9 голосов
/ 15 сентября 2010

При компиляции этого кода я получаю следующее ошибка :

В функции 'int main ()': строка 11: ошибка: неверная инициализация неконстантной ссылкивведите 'Main &' из временного типа 'Main'

Вот мой код:

template <class T>
struct Main
{
    static Main tempFunction(){
       return Main();
    }
};

int main()
{
   Main<int> &mainReference = Main<int>::tempFunction(); // <- line 11
}

Я не понимаю, почему?Кто-нибудь может объяснить?

1 Ответ

9 голосов
/ 15 сентября 2010

В C ++ временные ссылки не могут быть привязаны к непостоянным ссылкам.

Main<int> &mainReference = Main<int>::tempFunction();

Здесь вы пытаетесь присвоить результат выражения rvalue непостоянной ссылке mainReference, которая недопустима.

Попробуйте сделать это const

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...