-1

我有一个使用这种形式声明的类

MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
{
    ...
}

我想用这种形式重构它,如下所示:

class MainWindow : QMainWindow, ui 
{
    MainWindow(QWidget *parent)
    {
        ...
    }
}

但是我删除了第一种形式的参数。这个参数是什么意思?

如何将它们保持在第二种形式?请向我解释第一种语法(或指向教程)。我不明白带参数的继承。

编辑:

我现在明白了这个问题,该类是在一个单独的 .h 文件中初始化的,我乍一看并没有看到。我想:方法定义之后是继承运算符,而它是成员初始化运算符。

4

2 回答 2

1

这是构造函数的实现,调用基类构造函数并在初始化列表中初始化数据成员:

MainWindow(QWidget *parent) :
        QMainWindow(parent),   // call base class constructor
        ui(new Ui::MainWindow) // initialize data member ui
{
    ...
}

该类很可能继承自QMainWindow并具有一个Ui::MainWindow*名为 的数据成员ui。您的第二个代码片段似乎是声明类的错误尝试。没有这样的“参数继承”,所以你不能做你问的事情。

于 2012-09-05T16:22:32.427 回答
0

首先是constructorwith initializer-list initialization,这个例子很好。第二个示例永远不会编译,因为它的语法错误。看看这个例子在这个特定的情况下,使用成员初始化列表和在构造函数中赋值有区别吗?有关第一种语法的解释。

于 2012-09-05T16:21:54.877 回答