不允许指向不完整类类型的指针.(与相互引用的类相结合.)
Pointer to incomplete class type is not allowed.( In combination with classes referring to each other.)
我遇到了一些问题,似乎一次又一次地遇到不同的问题。这应该很简单,我只是不知道我在这里到底在做什么,因为我对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;
};
然后在设置函数中,我得到管理器发送的指针,并将其声明为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,所以我不能。
有人能向我解释一下该怎么做吗?
我会继续寻找解决方案,如果我自己找到了,我会把它发布在这里。感谢您提前提供的帮助!
Alexander
在erGuidItem.cpp中,#include "erGuiManager.h"
。
相关文章:
- C++ 将函数指针与最佳性能相结合
- 将2个欧拉角与GLM相结合的问题
- 抽象和派生与std::list相结合
- 想要将 CGAL 与四元数相结合是否合乎逻辑
- 可变参数模板与默认模板参数相结合
- 是否可以将C++与任何语言相结合?
- 如何将Back_inserter与转换组合C 相结合
- C 操纵器,可以将SetPrecision Manip与SetFill Manip相结合
- 如何将Boost.Spirit自定义点与Nabialek相结合?
- 将可选与reference_wrapper相结合是否有意义?
- 好的设计?用于分配的智能指针与用于访问的原始指针相结合
- 用户定义的文字与UINT64_T参数相结合
- 前向迭代器与多个绑定相结合的迭代速度太快
- 有问题使循环工作与功能相结合
- 如何在C++中将惰性计算与自动计算相结合
- 在Visual Studio中将调试与C .lib的发行版相结合
- 将声明和初始化与超载`=`相结合
- Mac OS X上的MetaTrader 4与C++或R相结合
- 如何将类型约束和隐式转换与C++11通用引用相结合?
- 不允许指向不完整类类型的指针.(与相互引用的类相结合.)