2009-08-05 7 views
2

UNICODE의 사용 여부에 따라 다른 구현을 사용하는 문자열 클래스가 있습니다.typedef 된 클래스를 어떻게 전달합니까?

#ifdef UNICODE 
typedef StringUTF16 StringT; 
#else 
typedef StringUTF8 StringT; 
#endif 

잘 작동하지만 현재 StringT typedef를 전달해야하는 곳에 문제가 있습니다. 어떻게해야합니까?

나는 typedef StringT;을 할 수 없으므로 앞으로 선언하기가 까다 롭습니다. 헤더 파일의 맨 위에 위의 코드를 수행하지 않고이 typedef'd 유형의 전달 선언을 수행 할 수 있습니까?

답변

8

iosfwd 표준 헤더로 설정 한 예제를 따르십시오. 이 포함 된 헤더 파일을 작성 및 통화 적어도이 재사용하고이를 참조 헤더까지하지 추한 않습니다

class StringUTF16; 
class StringUTF8; 

#ifdef UNICODE 
typedef StringUTF16 StringT; 
#else 
typedef StringUTF8 StringT; 
#endif 

을 StringTFwd.h.

+0

아 ... 그럼 내가 두려워하는 것. 건배 :) – Goz

2

수 없습니다. (Rational : typedef를 사용하여 기본 유형에 대한 별명을 정의 할 수 있으며 정확한 유형에 따라 다른 ABI 규칙을 사용할 수 있습니다.)

StringUTF16 및 StringUTF8을 모두 선언 한 다음 #idef을 사용할 수 없습니까?

관련 문제