次のように、videoというQtクラスを作成しました。
video.h
class Video : public QDjangoModel {
Q_OBJECT
// ...
public:
explicit Video(QObject *parent = 0);
// ...
};
video.cpp
Video::Video(QObject *parent) : QDjangoModel(parent) {}
次のエラーが発生しました:
In file included from ../OnlineVideoPlayer/video.h:7:0,
from ../OnlineVideoPlayer/video.cpp:28: ../../../bin/QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore/qobject.h: In
copy constructor 'QDjangoModel::QDjangoModel(const QDjangoModel&)':
../../../bin/QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore/qobject.h:333:5:
error: 'QObject::QObject(const QObject&)' is private
/usr/local/include/qdjango/db/QDjangoModel.h:72:22: error: within this
context In file included from ../OnlineVideoPlayer/video.cpp:28:0:
../OnlineVideoPlayer/video.h: In copy constructor 'Video::Video(const
Video&)': ../OnlineVideoPlayer/video.h:14:7: note: synthesized method
'QDjangoModel::QDjangoModel(const QDjangoModel&)' first required here
このクラスは、( QDjangoQDjangoModel
に含まれている)という名前のクラスを拡張し、を拡張します。Qtクリエーターでクラスを作成すると、次のテンプレートが作成されます。QDjangoModel
QObject
NewClass::NewClass(QObject *parent) : QObject(parent) {}
親のコンストラクターだと思っ: QObject(parent)
たので、置き換えました: QDjangoModel(parent)
が、間違っているようです。
質問:
Q1。どういう: QObject(parent)
意味ですか?
私は初期化リストについてグーグルで検索しました、そして私は次のコードの意味を理解しています:
class NewClass {
public:
FileReader(QString name);
private:
QString m_name;
};
NewClass::NewClass(QString name) : m_name(name) {}
この場合、
m_name = name;
コンストラクターが実行されたときに実行されますよね?
しかし、私の場合、
NewClass::NewClass(QObject *parent) : QObject(parent) {}
また
NewClass::NewClass(QObject *parent) : QDjangoModel(parent) {}
意味しない
QObject = parent;
また
QDjangoModel = parent;
明らかに、私の理解はm_name(name)
ケースには当てはまりませんQObject(parent)
。
Q2。このエラーを修正するにはどうすればよいですか?