我遇到了困难,我似乎一遍又一遍地反对不同的问题。它应该很简单,我只是不知道我在这里做了什么,因为我对C ++很陌生。
我有一个主类,可以为GUI项创建一个管理器。经理将创建GUI项目并更新它们等。
GUI项目有自己的代码来控制自己的行为。但是对于某些事情,我希望从这些GUI项目中获得指向GUI管理器的指针。
这意味着我的GUI管理器需要能够创建项目的项目指针。但是这些项目也需要指向这位经理的指针。
因为不可能互相包含,所以我只在经理中包含了该项目。像这样在经理的头文件中:
erGuiManager.h
#pragma once
#include "ofMain.h"
#include "erGuiItem.h"
class erGuiManager {
public:
erGuiManager();
void update();
void draw();
void setup();
erGuiItem* btn;
};
我在erGuiManager.cpp中创建这样的项目,并从经理向项目发送参考。
#include "erGuiManager.h"
void erGuiManager::setup() {
btn = new erGuiItem();
btn->setup(this); //THE SETUP GETS A REFERENCE TO THE MANAGER
}
// and update them etc
现在我在erGuiItem.h中创建了一个指向管理器的指针,我没有包含Manager.h,但我只是声明它,所以编译器知道它是一个类:
#pragma once
#include "ofMain.h"
#include "ofImage.h"
class erGuiManager; //DECLARING THE MANAGER
class erGuiItem {
public:
erGuiItem();
void setup(erGuiManager* GuiManager);
protected:
erGuiManager* GM;
};
然后在setup函数中,我得到管理器发送的指针并将其声明为erGuiItem.cpp中的指针:
#include "erGuiItem.h"
void erGuiItem::setup(erGuiManager* GuiManager) {
GM = GuiManager;
}
void erGuiItem::update() {
GM->somevariable = variable; //HERE IS WHERE THE ERROR OCCURS
}
然后我尝试用我的项目中的代码中的管理器的某个指针做一些事情,如上所示。这就是我收到错误的地方不允许指向不完整类类型的指针..
现在我知道这个问题来自何处,我只声明了类erGuiManager,而我没有正确定义它。但我不知道如何做到这一点。通常情况下我必须#include经理来解决这个问题,但由于经理已经包含了erGuiItem,我无法做到。
有人可以向我解释如何正确地做到这一点吗?
我会继续寻找解决方案,如果我自己找到一个,我会在这里发布。感谢您提前提供任何帮助!
亚历山大
答案 0 :(得分:1)
在 erGuiItem.cpp 中#include "erGuiManager.h"
。