У меня есть следующий код:Как вы явно инициализируете ссылку в C++?
class SomeClass {};
class SomeOtherClass {
SomeClass& someObj;
public:
SomeOtherClass() {someObj = SomeClass();}
};
И я получаю ошибку на конструктор для SomeOtherClass
говоря Constructor for 'SomeOtherClass' must explicitly initialize the reference member 'someObj'
.
Итак, я думаю, мой вопрос довольно прост. Как вы инициализируете ссылку?
Под капотом ссылка не все, что отличается от указателя ... она просто должна быть инициализирована (нет «нулей») и не может быть изменена после ее инициализации. Если вы намерены безопасно держаться за объект, который вы выделяете, - и типичная переменная-член по значению не будет достаточной - посмотрите на использование [умных указателей] (http://en.wikipedia.org/wiki/Smart_pointer), например 'shared_ptr someObj;' или 'unique_ptr someObj;' ... и инициализация с помощью 'someObj (new SomeClass())'. –
HostileFork