Znajdź główną przyczynę „nie można uzyskać dostępu do prywatnego członka zadeklarowanego w klasie„ QObject ””
Rozumiem, dlaczego dostajęC2248: 'QObject::QObject' : cannot access private member declared in class 'QObject'
. Obiekty Qt nie są kopiowalne, jak wyjaśniono tutaj:
Theproblem jest to, że komunikat kompilatora zawsze wskazuje ostatnią linię (zamykającą}
) klasy:
class MyQObject : public QObject {
Q_OBJECT
....
}; <-- error line
Przyczyna pierwotna jest gdzie indziej, tj. gdzie klasa jest kopiowana (inny plik, inna linia w kodzie). Czasami trudno to zauważyć!Pytanie: Czy istnieje sposób na zlokalizowanie linii prawdziwego powodu błędu
Uwaga: Uwaga, zanim zaznaczysz ten duplikat. Pytanie dotyczy znalezienia pierwotnej przyczyny, a nie sposobu jej rozwiązania, jak w innych pytaniach.
--- Edytuj 1 ---
Dobra wskazówka Kuba i in. Jest to VS2010, kompilacja w Qt Creator 2.8.0
'QObject::QObject'
C:\Qt\5.1.0-32\qtbase\include\QtCore/qobject.h(115) : see declaration of 'QObject'
This diagnostic occurred in the compiler generated function 'MyQObject ::MyQObject (const MyQObject &)'
Zastanawiam się, dlaczego generowany jest konstruktor kopii. Jeden pomysł przemknął mi przez głowę, używam wersji Qt z włączoną opcją DBus, może to jest powód?