Ошибка с подклассом 'QObject' и конструктором копии: 'QObject:: QObject (константа QObject&) является частным'

Проверьте разработчик toolboar IE.

8
задан Adri C.S. 15 November 2013 в 13:14
поделиться

3 ответа

Продукт является подклассом QObject , который нельзя скопировать. Ваш код пытается скопировать его куда-нибудь (возможно, в productDetails (tempProduct) ), и это вызывает ошибку. Возможно, вы могли бы вместо этого передать его в свою функцию по ссылке const; или, возможно, требуется переделать вашу программу.

Ваш компилятор сообщает вам, что конструктор копирования QObject является частным, поэтому он не может быть вызван какой-либо функцией, которая не является методом базового класса . Qt спроектировал его для работы таким образом.

Одна из причин, по которой Qt запрещает копирование QObject s, заключается в том, что он управляет памятью дочерних объектов QObject . Когда QObject удаляется, то же самое происходит со всеми его дочерними объектами.

22
ответ дан 5 December 2019 в 05:56
поделиться

Копирование запрещено для потомков QObject ...

См. http://lists.trolltech.com/qt-interest/2001-02/thread00123-0.html

Функция productDetails () принимает параметр по значению, что делает копию необходимой. Измените его, чтобы вместо него использовалась постоянная ссылка.

4
ответ дан 5 December 2019 в 05:56
поделиться

В строке 574 вы пытаетесь передать один из этих элементов в функцию productDetails. Вы этого не показываете, но я предполагаю, что эта функция либо принимает значение. Таким образом, компилятор пытается создать новый объект для его передачи, но это не разрешено библиотекой, которая намеренно установила конструктор копирования как закрытый.

Создайте новый объект явно или исправьте вызываемую функцию.

2
ответ дан 5 December 2019 в 05:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: