2012-05-24 4 views
2

C++에서는 멤버 함수를 선언하는 다른 클래스 내에 클래스를 정의 할 수 있습니다. 나중에 이러한 선언에 대한 정의를 정의 할 때 포함하는 클래스를 계속 반복하지 않는 방법이 있습니까? 예를 들어, 내 헤더는 다음과 같습니다 나중에 다음내장 클래스에 대한 메소드를 정의 할 때 포함하는 클래스를 반복하지 않는 방법이 있습니까?

class Outer { 
    class Inner { 
    void one(); 
    void two(); 
    void three(); 
    }; 
}; 

그리고를 내 정의는 다음과 같습니다

void Outer::Inner::one() { ... } 
void Outer::Inner::two() { ... } 
void Outer::Inner::three() { ... } 

바깥이 시점에서 정의하지 않고 생략 할 수있는 몇 가지 방법이 있나요 내가 특별히이 (여기에 어떤 컴파일러)를 시도하지 않은

void Inner::one() { ... } 
void Inner::two() { ... } 
void Inner::three() { ... } 
+0

'typedef '를 사용해 보셨습니까? 작동합니까? –

답변

3

,하지만 난 당신이 내부 CL로 작업하는 경우 있음을 짐작 것 : 아마도 네임 스페이스의 사용을 통해 선언은되기 위해 엉덩이, :: 반복자처럼, 당신은 아마 할 수있는 : 다음

using outerclass::innerclass; 

와는 수행

innerclass::foo() { /* def */ } 

는 외부 클래스의 범위에서 내부 클래스와 같은 이름의 전역이없는 가정 .

또한 확실히 매크로를 사용할 수 있으며 typedef를 사용할 수 있습니다 (확실하지는 않지만 시도해 볼 가치가 있음).

나는이 모든 것이 코드를 읽기 어렵게 만들고 그것이 주위에서 어떻게 작동하는지 상관없이 나쁜 생각이라고 말하고 싶습니다.