2013-03-18 7 views
2
MyClass& getMyClass() {return m_class} 

private: 

    myClass* m_class; 

Это дает мне Сообще ошибке: ошибки: недопустимая инициализацию ссылки типа «MyClass &» из выражения типа 'MyClass *C++ возвращает ссылку на объекте

Что нужно изменить, чтобы сделать его Работа? Я хочу вернуть обновление этого объекта. Поэтому я не хочу менять прототип функции getMyClass.

+1

Указатели и ссылки разные. – chris

+1

'return * m_class;' – jrok

ответ

5

Изменить его

return *m_class; 

Убедитесь, что m_class является допустимым указателем (например, не NULL или освобождаться)!

+0

Действительно ли 'NULL' действительный указатель? –

+0

@SteveTownsend picky picky: D –

+0

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

2

Поскольку указатели не являются ссылками, и вы возвращаете указатель, тогда как должны возвращать ссылку. Чтобы превратить указатель в ссылку (в данном случае), вы должны удалить ссылку на указатель, например:

MyClass& getMyClass() {return *m_class} 
Смежные вопросы