그럼 당신은 어떤 시점에서, 특히 만 shared_ptr의 개체 내에서 사용할 수 MyClass
을 설계하지 않는 한, 나는 그것의 큰 팬이 아니에요 나는 그 요구 사항을 강요 할 것을 주장 할 것이다.
주어진 개체에 사용할 수있는 관련이없는 템플릿 인스턴스화마다 typedef를 넣는 것은 약간 우스운 일입니다. 그냥 MyClass
을 shared_ptr에 넣을 수 있기 때문에 거기에 typedef를 지정하지 않는 것이 좋습니다. 당신은 std :: vector, map, list, unordered_map, set, deque, .... 등의 typedef를 넣을 것인가?
그러나 MyClass
이 shared_from_this를 확장하고 개인/보호 된 생성자를 가지고 있기 때문에 오직 생성되어 즉시 shared_ptr에 할당 될 수 있습니다. 그러면 확실히 ... 인터페이스의 일부입니다.
당신은 더 나은 내기가 외부 유틸리티 오브젝트는 당신이 인용 된 문서에 표시처럼 다음 매개 변수를 많이 가진 템플릿 유형에 대한 shared_ptr의 인스턴스를 긴 매개 변수 목록을 입력 할 필요가 없도록하려는 경우 :
template < typename T >
struct instantiate_shared_ptr { typedef shared_ptr<T> type; };
template < typename after typename > struct my_complex_template {};
typedef my_complex_template<some parameters> mct_1;
typedef instantiate_shared_ptr<mct_1>::type mct_1_sp;
C++ 0x는 "앨리어싱"템플릿 클래스에 대한 구문을 제공한다고 생각합니다. 누구나 구문을 기억합니까? – davka
http://en.wikipedia.org/wiki/C%2B%2B0x#Template_aliases - 필자가 사용해야하는 컴파일러에는 적어도 구현되어 있지 않으므로 필자는이를 권장하지 않는다. 가장 일반적인. 하지만 그래, 다른 방법이야. 다른 한편으로, 나는 그들이 나의 구체적인 예를 실제로 도울 것이라고 의심하지 않는다. –
노아 감사합니다. 템플릿 별칭이 내 문제에 대한 대답이지만 GCC가 아직 지원하지 않는다고 생각합니다. 어떤 대안? – blueskin