是否可以将超过2个私人成员传递给一个班级?

时间:2014-08-11 12:25:49

标签: c++ qt private

我在编写Qt代码时遇到问题。我不知道为什么我不能将两个以上的私人成员传递给一个班级。这是代码:

在头文件(名为wind.h)中

 #ifndef WIND_H
 #define WIND_H

 #include <QApplication>
 #include <QWidget>
 #include <QPushButton>

class second : public QWidget
{
    public:
        second();

    private:
        QPushButton *bout1;
        QPushButton *bout2;
        QPushButton *bout3;
};
#endif // WIND_H

在wind.cpp文件中

  #include "wind.h"

 second::second() :QWidget()
 {
    setFixedSize(700, 150);
    bout1 = new QPushButton("button1", this);
    bout2 = new QPushButton("button2", this);
    bout3 = new QPushButton("button3", this);
}

而main.cpp就像

#include <QApplication>
#include "wind.h"


int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    second sec;
    sec.show();

    return app.exec();
}

实际上,这段代码没有编译并运行调试,调试中甚至出现了错误,但是如果我将这一行放在注释中就可以了:

  //bout3 = new QPushButton("button3", this);

当我通过2个以上的私人会员时,为什么它不起作用?我怎么能解决它?

谢谢! :)

1 个答案:

答案 0 :(得分:1)

您的代码如图所示。作为参考,这是一个单独的文件示例:

#include <QApplication>
#include <QWidget>
#include <QPushButton>

class Second : public QWidget
{
public:
   Second();

private:
   QPushButton *bout1;
   QPushButton *bout2;
   QPushButton *bout3;
};

Second::Second() : QWidget()
{
   setFixedSize(700, 150);
   bout1 = new QPushButton("button1", this);
   bout2 = new QPushButton("button2", this);
   bout3 = new QPushButton("button3", this);
}

int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   Second sec;
   sec.show();
   return a.exec();
}

如果没有传递任何参数,则无需在初始化列表上显式列出基类构造函数。您也不需要在堆上明确分配任何内容。所以,这是一个更好的风格:

#include <QApplication>
#include <QWidget>
#include <QPushButton>

class Second : public QWidget
{
   QPushButton bout1, bout2, bout3;
public:
   Second();
};

Second::Second() :
   bout1("button1", this),
   bout2("button2", this),
   bout3("button3", this)
{
   setFixedSize(700, 150);
}

int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   Second sec;
   sec.show();
   return a.exec();
}