【发布时间】:2017-04-16 21:40:34
【问题描述】:
我一直在开发 C++ 游戏引擎。在我更新到 Xcode 8.3.1 之前,我从未遇到过编译器或类似问题的任何问题!
突然,当我更新它时,似乎更改了默认设置,因此编译器根本无法处理循环引用。
有谁知道如何设置它,(我尝试降级 Xcode,但它仍然不起作用!)
我的循环引用看起来像这样:
- 我的代码中定义了一个名为“Object”的类
- “Object”包括另一个名为“Renderer2D”的类
- “Renderer2D”包括另一个名为“Renderable2D”的类
- “Renderable2D”扩展“对象”
我的“对象”类:
#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 *'"
}
};
}
}
我所有的错误基本上都是“未知类 [x]”的变体,其中 x 是其他类之一。
任何帮助将不胜感激!
【问题讨论】:
-
如果没有看到representative test-case,就很难发表评论。
-
我加了一个例子
-
请添加一些实际代码以及您看到的错误。
-
这样更好吗?
-
在尝试重现此内容时,我不得不进行太多更改。你能进一步减少这个问题吗?
标签: c++ xcode compiler-errors llvm circular-reference