이와 같이 중첩 클래스를 forward-declare 할 수 없습니다.
당신이하려는 일에 따라 바깥 레이어의 클래스가 아닌 네임 스페이스를 사용할 수 있습니다. 당신은 이러한 클래스에게 아무런 문제가 앞으로-선언 할 수 없습니다 : 외부가 될하기 위해 외부 절대적으로 클래스이어야합니다
namespace Outer {
struct Inner;
};
Outer::Inner* sweets; // Outer::Inner is incomplete so
// I can only make a pointer to it
, 그리고 네임 스페이스로를 신발 경적 수 없습니다, 당신은해야합니다 전달할 컨텍스트에서 완전한 유형을 선언하십시오.
class Outer
{
class Inner; // Inner forward-declared
}; // Outer is fully-defined now
Outer yes; // Outer is complete, you can make instances of it
Outer::Inner* fun; // Inner is incomplete, you can only make
// pointers/references to it
class Outer::Inner
{
}; // now Inner is fully-defined too
Outer::Inner win; // Now I can make instances of Inner too
귀하의 코드의 끝없는 사슬처럼 보인다 "외부 외부 외부 외부를 포함 포함 포함 ..." – Muxecoid
[내부 클래스를 선언하는 방법은 무엇입니까?] (http://stackoverflow.com/questions/1021793/how-do-i-forward-declare-an-inner-class) –