C ++: проблемы с наличием содержащего класса вызова функции из содержащегося класса - PullRequest
0 голосов
/ 25 января 2012

Я полагаю, что это может быть связано с вопросом #inclusion или с предварительным объявлением, а не с моим синтаксисом, поскольку в настоящее время я получаю сообщения об ошибках "недопустимого использования неполного типа" struct MainWindow "и" предварительного объявления'struct MainWindow', когда я пытаюсь построить следующее в Qt Creator (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 Ответ

3 голосов
/ 25 января 2012

Вам необходимо включить mainwindow.h в myclass.cpp после myclass.h. В myclass.cpp вы вызываете метод MyClass (внутри MyClass::callParentFunction), но в этот момент у компилятора все еще есть прямое объявление MainWindow.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...