ссылка как переменная члена класса без инициализации - PullRequest
0 голосов
/ 22 марта 2012

Есть ли способ использовать ссылку в качестве переменной-члена, не инициализируя ее в конструкторе?Моя проблема в том, что у меня нет ссылки при создании объекта.

Ответы [ 3 ]

4 голосов
/ 22 марта 2012

Нет.Ссылки должны быть инициализированы при создании и не могут быть изменены после этого.Стандарт гласит, что

Ссылка должна быть инициализирована для ссылки на действительный объект или функцию.

Если у вас нет целевого объекта под рукой,переключиться на использование указателя вместо ссылки.

2 голосов
/ 22 марта 2012

> Is there a way to use a reference as a member variable without initialising it in the constructor?

Нет, ссылки должны быть инициализированы в списке инициализатора конструктора

> My problem is that I don't have the reference at hand when constructing the object.

Полагаю, вы имели в виду, что у вас нет объекта, к которому можно обратиться. В этом случае вы должны пойти для указателя и инициализировать его в NULL. Затем, когда у вас есть объект, наведите указатель на него. Ссылка не может быть использована в этом случае, так как вы не можете инициализировать ссылку на NULL

0 голосов
/ 22 марта 2012

Как только ссылка инициализируется, она на время своей жизни будет указывать на одну и ту же сущность. Любая попытка «переустановить» приводит к неопределенному поведению.

Очень короткий ответ: если вы не можете инициализировать, вы не можете его использовать.

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