Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在另一个类中使用一个类? 我正在开发一个QT应用程序,我对C++很陌生。我想做的是,创建一个类作为变量,然后使用另一个类的内容_C++_Qt - Fatal编程技术网

如何在另一个类中使用一个类? 我正在开发一个QT应用程序,我对C++很陌生。我想做的是,创建一个类作为变量,然后使用另一个类的内容

如何在另一个类中使用一个类? 我正在开发一个QT应用程序,我对C++很陌生。我想做的是,创建一个类作为变量,然后使用另一个类的内容,c++,qt,C++,Qt,我的结构和我试图做的事情,由-->和表示,您有一个很好的开始,但是由于您的BHSettings类有一个非默认构造函数,为了将其作为成员变量,您应该将其初始化到构造函数的初始化列表中 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), settings(qApp->applicationDirPath() + "/settings.ini") <

我的结构和我试图做的事情,由-->和表示,您有一个很好的开始,但是由于您的
BHSettings
类有一个非默认构造函数,为了将其作为成员变量,您应该将其初始化到构造函数的初始化列表中

MainWindow::MainWindow(QWidget *parent) : 
  QMainWindow(parent), 
  ui(new Ui::MainWindow), 
  settings(qApp->applicationDirPath() + "/settings.ini")  <--
{
  ui->setupUi(this);
}
MainWindow::MainWindow(QWidget*父项):
QMainWindow(父级),
ui(新ui::主窗口),
设置(qApp->applicationDirPath()+“/settings.ini”)设置UI(此);
}
不能在类声明中将其初始化为内联声明或类似的操作


还请注意,这将导致每次实例化
main窗口
class

时初始化设置对象(即构建的
BHSettings
对象),而不使用初始化代码在类定义中声明成员

   BHSettings settings;
在类的构造函数中添加初始化代码

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent), ui(new Ui::MainWindow),
    settings(qApp->applicationDirPath() + "/settings.ini")
{
    ui->setupUi(this);
}
您可以使用:

void MainWindow::doSomething() {
    settings.loadSettings();
}

如果您不需要在该功能之前进行设置。如果有意义,您也可以在构造函数中调用它。

在MainWindow类中,定义变量:

public:
    BHSettings settings; 
在构造函数中,初始化此成员:

MainWindow::MainWindow(QWidget *parent) : ... , settings(qApp->applicationDirPath() + "/settings.ini") 
{
...
}
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent), ui(new Ui::MainWindow),
    settings(qApp->applicationDirPath() + "/settings.ini")
{
    ui->setupUi(this);
}
void MainWindow::doSomething() {
    settings.loadSettings();
}
public:
    BHSettings settings; 
MainWindow::MainWindow(QWidget *parent) : ... , settings(qApp->applicationDirPath() + "/settings.ini") 
{
...
}