2012-01-25 18 views
0

現在、「invalid」というエラーが発生しているため、これは#includingまたはforward宣言の問題ではなく、不完全型「構造体のメインウィンドウ」の使用「および」 『構造体のメインウィンドウ』の前方宣言私はQtの創造主(Qtの4.7.4)で次のように構築しようとすると:C++:包含クラスから関数を含むクラスの問題

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); 
} 

私は、任意のアイデアをいただければと思います。ありがとう!

答えて

3

myclass.cppに含めてください。myclass.hの後に入力する必要があります。 myclass.cppでは、MyClassMyClass::callParentFunction)のメソッドを呼び出しますが、その時点でコンパイラはまだforward-declarationがMainWindowしかありません。

+0

くそ、46秒遅れ...私は私の投稿を削除します:あなたはとにかく良いです... +1 – paercebal

+0

D'oh !!!ありがとうございました。少なくともコードは、これをやろうとしている誰かに役立つはずです... – Anthony

関連する問題