2012-03-22 2 views
0

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

+1

Показать, что вы хотели бы сделать. Возможно, вам не нужно выполнять всю инициализацию внутри конструктора, что-то можно сделать ленивым, когда вам это понадобится. –

+0

Можете ли вы построить объект после того, как у вас есть ссылка на руку? –

ответ

2

> 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

4

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

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

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

0

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

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

Смежные вопросы