我有一個是公開從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;
};
當我建我的項目,編譯器抱怨:
WARNING:: Base class "class QWidget" should be explicitly initialized in the copy constructor.
我從其他的問題檢查出來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&) is private within this context
所以,請給我解釋一下我在做什麼錯。
似乎'QWidget'沒有設計成拷貝構造,這意味着你的派生類型不應該是。 – juanchopanza
你是否明確地爲'QWidget'創建了一個拷貝構造函數,或者你把它留給了編譯器? – Olayinka
我不需要爲QWidget創建一個Copy-Constructor。我可以在我的對象的拷貝構造函數的init列表中初始化調用QWidget :: Cpoy-Constructor的對象。 –