我一直在開發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 *代碼,以及您看到的錯誤。 –