C ++:包含类的问题从包含的类中调用函数

时间:2012-01-25 16:57:28

标签: c++ oop

我认为这可能是#including或forward声明的问题,而不是我的语法问题,因为我目前收到的错误是“无效使用不完整类型'struct MainWindow'”,以及“转发声明”当我尝试在Qt Creator中构建以下内容时,'struct MainWindow'(Qt 4.7.4):

MYCLASS.H

#ifndef MYCLASS_H
#define MYCLASS_H

class MainWindow;

class MyClass
{
public:
    MyClass(MainWindow * parent);
    void callParentFunction();

private:
    MainWindow *myPointer;
};

#endif // MYCLASS_H

MYCLASS.CPP

#include "myclass.h"

MyClass::MyClass(MainWindow *parent) : myPointer(parent)
{
}

void MyClass::callParentFunction()
{
    myPointer->setSpinBoxValue(500);
}

MAINWINDOW.H

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QDoubleSpinBox>
#include "myClass.h"

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow();
    void setSpinBoxValue(double x);

private:
    QDoubleSpinBox *mySpinBox;
    MyClass *myObject;

};

#endif // MAINWINDOW_H

MAINWINDOW.CPP

#include "mainwindow.h"

MainWindow::MainWindow()
{
    mySpinBox = new QDoubleSpinBox;
    setCentralWidget(mySpinBox);

    myObject = new MyClass(this);
    myObject->callParentFunction();
}

void MainWindow::setSpinBoxValue(double x)
{
    mySpinBox->setValue(x);
}

我很欣赏任何想法。谢谢!

1 个答案:

答案 0 :(得分:3)

您需要在<{strong> mainwindow.h之后的myclass.cpp 中加入myclass.h。在myclass.cpp中,您调用MyClass的方法(在MyClass::callParentFunction内),但此时编译器仍然只有MainWindow的前向声明。