'불완전한 유형의 잘못된 사용은'나는 내 breadData
객체에서 모든 값을 표시하고, 나는 settings
상속 breadData
의 보호 회원을 갖고 싶어 그렇게 원하는 대화 창 settings
있습니다. breadData 선언을 전달하려고하지만 코드에 몇 가지 오류가 발생합니다. 하나다중 상속 오류
/home/--/breadPull/prj/settings.h:14: error: invalid use of incomplete type 'struct breadData'
/home/--/breadPull/prj/resultwnd.h:7: error: forward declaration of 'struct breadData'
는 breadData
, 왜 컴파일러가 breadData는 구조체 인 구조체 생각 하는가 아닌가요? 두 번째로 나는 두 번째 라인이 말하려고하는 것을 이해하지 못한다. 내 유일한 추측은 내 프로그램에 많은 순환 종속성이 있기 때문입니다. 여기에 관련 코드입니다 :
settings.h
#include <QDialog>
#include "breaddata.h"
class breadData;
namespace Ui {
class Settings;
}
class Settings : public QDialog, public breadData
{
Q_OBJECT
//.....
breadData.h
#include <vector>
#include <string>
#include <QtWidgets>
#include <QMainWindow>
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "resultwnd.h"
#include "settings.h"
class MainWindow;
class resultWnd;
class breadData
{
public:
breadData(std::string);
~breadData();
//read in data file that provides all information
bool readData();
//.......
resultWnd.h
include <QGroupBox>
#include "breaddata.h"
class breadData;
namespace Ui {
class resultWnd;
}
class resultWnd : public QGroupBox
//.....
'breaddata.h '는'settings.h'를 포함하고 그 반대도 마찬가지입니다. 이것은 순환 의존성을 포함하며 작동하지 않습니다. 다행히도 그것에 대해 많은 의문점이 있습니다. – juanchopanza
@juanchopanza'MainWindow'와'breadData'도 원형 의존성이고 작동합니다. 헤더 파일에 구현이 포함되어 있지 않은 한 –
제대로 작동하면 우연히 작동합니다. 순환 종속성을 제거해야합니다. – juanchopanza