kopierkonstruktor von abgeleitet von QT Klasse

Habe ich eine Klasse, die ist öffentlich, geerbt von 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;
};

Wenn ich baute mein Projekt, compiler beschwert sich:

ACHTUNG:: Base class "die Klasse QWidget" sollte explizit initialisiert
in den copy-Konstruktor.

Ich habe aus anderen Fragen auf stackoverflow, und habe meine Antwort.
Aber die Tatsache ist, wenn ich fügte hinzu, dass die Initialisierung so:

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;
};

Bekam ich kompilieren-Fehler:

QWidget::QWidget(const QWidget&) privat ist in diesem Zusammenhang

Also, bitte erklären Sie mir, was ich falsch mache.

  • Es scheint, dass QWidget ist nicht darauf ausgelegt, kopieren bebaubar, was bedeutet, dass Ihre abgeleiteten Typ sollte nicht sein.
  • Hast du explizit erstellen Sie eine Kopie Konstruktor für QWidget oder Sie überlassen es dem compiler?
  • Ich weiß nicht brauchen, um eine Kopie-Konstruktor für QWidget. Ich kann nur initialisieren das Objekt Aufruf von QWidget::Cpoy-Konstruktor in der init-Liste von mein Objekt der copy-Konstruktor.
Schreibe einen Kommentar