2015-04-06 6 views
1

Я только начинаю в C++ и у меня возникает проблемы с одной частью моего назначения:Проблем возвращающих объект в C++

class Something { 
    public: 
     Random& random(); // should access a data member of type Random 
    private: 
     Random test(int r, int c); 
} 

Random& Something::random() { 
     return (Random&) test; 
} 

и теперь есть ошибка с «тестом» в определении функции из random(), потому что «выражение должно быть lvalue», и я построил решение, и сообщение об ошибке указано «&»: незаконная операция над выражением функции связанных членов »

Мне нужно сохранить декларацию функции так оно и есть, потому что это указано в спецификациях.

Как исправить это?

+1

'test' является функция – P0W

+0

Вы пытаетесь объявить' test' как переменные, или как функции члена? – AdamJames

+1

Не только это, даже если бы вы правильно назвали 'test', вы возвращаете ссылку на временную. Это не может привести к хорошим вещам. – PaulMcKenzie

ответ

3

Вы сказали в комментарии: «Тест» должен быть переменной-членом.

Затем вам нужно изменить свой класс:

class Something { 
    public: 
     Random& random(); // should access a data member of type Random 
    private: 

     // Not this. This declares test to be member function. 
     // Random test(int r, int c); 

     // Use this. This declares test to be member variable. 
     Random test; 
} 

Random& Something::random() { 
     return test; 
} 
Смежные вопросы