저는 오랫동안 C++ 게임 엔진을 개발해 왔습니다. Xcode 8.3.1로 업데이트하기 전까지는 컴파일러와 관련된 문제가 없었습니다.Xcode 8.3.1 - 컴파일러는 순환 참조를 더 이상 처리 할 수 없습니까?
갑자기, 컴파일러가 간단히 순환 참조를 처리 할 수 없도록 만든 기본 설정이 갑자기 변경된 것처럼 보입니다.
사람이 다시 (내가 엑스 코드를 다운 그레이드 시도하고 그것은 여전히 작동하지 않습니다!) 이내 원형 참조 이런 식으로 뭔가 보이는 설정하는 방법을 알고 있나요
: 나는 클래스가
- 을 내 코드에 정의 된 소위 "개체"
- 는 "개체" "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;
};
}
내 클래스 "를"확장 "
내 모든 오류는 기본적으로 "알 수없는 클래스 [x]"의 변형입니다. 여기서 x는 다른 클래스.
도움이 될 것입니다.
[대표 테스트 케이스] (http://stackoverflow.com/help/mcve)를 보지 않으면 논평하기가 다소 어렵습니다. –
예제를 추가했습니다 – flyingflouder86
보고있는 오류와 함께 실제 * 코드를 추가하십시오. –