传递参数时的类初始化问题

时间:2015-01-05 11:05:30

标签: c++ qt class

使用课时确实存在问题。

我的主文件定义如下:

int main(int argc, char *argv[])
{

    uint32_t error;

    QApplication app(argc, argv);
    QPalette pal = app.palette();
    pal.setColor(QPalette::Window, Qt::white);
    app.setPalette(pal);

    // Detecting puls device
    mtp_wrapper *MyDevice = new mtp_wrapper;
    error = MyDevice->ConnectDevice();

    if(error != ERROR_NONE) {
        app.quit();
    }
    else {

        MyDevice->Properties();
        MyDevice->DeviceScan();

        app.setOrganizationName("i.am+");
        app.setApplicationName("PULS");
        MainWindow MyMainWindow(MyDevice);
        MyMainWindow->show();
        return app.exec();
    }
}

我的问题是MainWindow MyMainWindow(MyDevice);这似乎没有被正确初始化。

类mtp_wrapper定义如下:

mtp_wrapper::mtp_wrapper() : DeviceMngr(NULL)
{
     LIBMTP_Init();
     DeviceMngr = new Device_struct;
     DeviceMngr->deviceConnected = false;
}

Device_struct是一个结构,它包含一个定义设备的变量列表。

为了在mainWindow程序(我的用户界面部分)中使用此信息,我已将MainWindow定义如下:

Mainwindow.h

class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    MainWindow(mtp_wrapper& device);

private:
    /* Mtp device access */
    mtp_wrapper& m_device;
...
}

MainWindow.cpp

MainWindow::MainWindow(mtp_wrapper& device) :
    m_device(device)
{
    resize(800,600);
    setUnifiedTitleAndToolBarOnMac(true);
    /* Creation of the Top bar section */
...
}

错误我没有匹配init mainwindow的构造函数。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

将指针mtp_wrapper *MyDevice传递给接受引用的构造函数 - MainWindow(mtp_wrapper &)导致的问题。您可以通过更改构造函数或传递参数的方式或使用值替换指针来解决此问题。我会做以下(第三种选择):

mtp_wrapper MyDevice;
error = MyDevice.ConnectDevice();

if(error != ERROR_NONE) {
    app.quit();
}
else {
    [..]
    MainWindow MyMainWindow(MyDevice);
    [..]     
}