私はから公的に継承されたクラスを持っていますQWidget
:
class MyWidget : public QWidget
{
Q_OBJECT
public:
MyWidget(const MyWidget& other)
:
obj1(other.obj1),
obj2(other.obj2)
private:
some_class obj1;
some_class obj2;
};
プロジェクトをビルドすると、コンパイラが不平を言います:
警告:: 基本クラス「class QWidget」は、コピー コンストラクターで明示的に初期化する必要があります。
stackoverflow に関する他の質問からチェックアウトし、回答を得ました。しかし、実際には、次のように初期化を追加したとき:
class MyWidget : public QWidget
{
Q_OBJECT
public:
MyWidget(const MyWidget& other)
:
QWidget(other), //I added the missing initialization of Base class
obj1(other.obj1),
obj2(other.obj2)
private:
some_class obj1;
some_class obj2;
};
コンパイルエラーが発生しました:
QWidget::QWidget(const QWidget&) は、このコンテキスト内でプライベートです
だから、私が間違っていることを説明してください。