Как разыменовать возвращаемое значение функции, возвращающей указатель, без использования временной переменной? - PullRequest
0 голосов
/ 19 сентября 2018

C ++ нуб здесь.

Итак, это функция-член моего class DbHelper:

QSqlQueryModel* getCourses();

Теперь, когда я делаю это в class MyModel, где QSqlQueryModel courses является членом:

this->courses = *(dbHelper->getCourses()); // problem here ... this is inside a member function of MyModel

Visual Studio говорит, что

функция ... operator = не может быть ссылка ... это удаленная функция

Конечно, я могу сделать этовместо этого:

QSqlQueryModel* q = dbHelper->getCourses();
this->courses = *q;

Но я думаю, что объявление другой переменной просто для разыменования может быть излишним.Так есть более короткий путь?

РЕДАКТИРОВАТЬ:

Просто проверил это с VS, и оказалось, что я действительно не могу.Мой разум действительно запутался в изучении указателей и ссылок весь деньСпасибо людям.

1 Ответ

0 голосов
/ 19 сентября 2018

Авторы класса QSqlQueryModel симпатичны и умно запрещают копирование экземпляров этого объекта.

Член класса должен иметь тип указателя:

QSqlQueryModel* courses;

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

this->courses = dbHelper->getCourses(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...