私は長い間C++ゲームエンジンを開発してきました。 Xcode 8.3.1にアップデートするまでは、コンパイラなどの問題は一度もありませんでした。Xcode 8.3.1 - コンパイラは循環参照を処理できません。
突然、コンパイラが循環参照を処理できないようにするために、デフォルト設定が変更されたように見えます。
誰もがこの背中を、(私はXcodeのをダウングレードしようとした、そしてそれはまだ動作しません!) がマイ円形参照は、このようなものに見える設定する方法を知ってい
:私はクラスを持っている
- を が
- 私のコード
- で定義された「オブジェクト」、「オブジェクト」は「Renderer2D」と呼ばれる別のクラスを含んで呼ばれる「Renderer2Dは、」レンダリング可能「「Renderable2D」
- と呼ばれる別のクラスを含み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" クラス:
:2Dは、オブジェクト "#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 *'" } }; } }
私の "オブジェクト"
#pragma once
#include "Graphics/2D/Renderer2D.h"
namespace kineticengine {
class Object {
public:
Object();
virtual ~Object() {}
virtual void render(graphics::Renderer2D* renderer) const;
};
}
マイクラス"」拡張します"
私のすべてのエラーは基本的には「Unknown class [x]」のバリエーションです。ここでxは他のクラス。
助けていただけたら幸いです!
[代表的なテストケース](http://stackoverflow.com/help/mcve)を見ずにコメントするのはやや難しいです。 –
私は例を追加 – flyingflouder86
あなたが見ているエラーと一緒にいくつかの*実際の*コードを追加してください。 –