我一直在开发C++游戏引擎很长一段时间。我从来没有遇到任何有关编译器的问题,或类似的东西,直到我更新到Xcode 8.3.1!Xcode 8.3.1 - 编译器不能再处理循环引用?
突然,当我更新时,默认设置被更改,使得编译器无法处理循环引用。
有谁知道如何设置回来,(我想降级的Xcode,它仍然无法正常工作!)
我的循环引用看起来是这样的:
- 我有一个类所谓的“对象”在我的代码定义
- “对象”包括所谓的“Renderer2D”其他类
- “Renderer2D”包括所谓的“Renderable2D”
- “渲染另一个类2D”扩展 “对象”
我的 “对象” 类:
#pragma once
#include "Graphics/2D/Renderer2D.h"
namespace kineticengine {
class Object {
public:
Object();
virtual ~Object() {}
virtual void render(graphics::Renderer2D* renderer) const;
};
}
我 “Renderer2D” 类:
#pragma once
#include "Renderable2D.h"
namespace kineticengine {
namespace graphics {
class Renderer2D {
protected:
Renderer2D() {}
public:
virtual void submit(const Renderable2D* renderable) {}; // Error here, "Unknown type name 'Renderable2D', did you mean 'Renderer2D'?"
};
}
}
我 “Renderable2D” 类:
#pragma once
#include "Renderer2D.h"
#include "../../Object.h"
namespace kineticengine {
namespace graphics {
class Renderable2D : public Object {
public:
Renderable2D() : Object() {}
virtual ~Renderable2D() {}
void render(Renderer2D* renderer) const override {
renderer->submit(this); // Error here "Cannot initialize parameter of type 'const kineticengine::graphics::Renderer2D *' with an rvalue of type 'const kineticengine::graphics::Renderable2D *'"
}
};
}
}
我所有的错误基本上都是“Unknown class [x]”的变体,其中x是其中之一其他类。
任何帮助,将不胜感激!
如果没有看到[代表性测试用例](http://stackoverflow.com/help/mcve),有点难以评论。 –
我添加了一个示例 – flyingflouder86
请添加一些* actual *代码,以及您看到的错误。 –