템플릿 클래스 인 C_Foo <T>은 여러 가지 방법으로 특수화되어 있습니다.C++ 템플릿 클래스를 목록에 추가하기
struct Bar_Base { ... };
struct Bar_1 : public Bar_Base { ... };
struct Bar_2 : public Bar_Base { ... };
struct Bar_3 : public Bar_Base { ... };
class C_Foo<T> { ... };
class C_Foo_1 : public C_Foo<Bar_1> { ... };
class C_Foo_2 : public C_Foo<Bar_2> { ... };
class C_Foo_3 : public C_Foo<Bar_3> { ... };
그리고 인스턴스화 다음과 같이
C_Foo_1 foo1;
C_Foo_2 foo2;
C_Foo_3 foo3;
나는 foo1은,에서는 foo2 및 foo3에서 수행 할 것을 C_Foo에 정의되어 모두 일반적인 작업, 세트를 가지고있다.
vector<C_Foo *> v;
v.push_back(&foo1);
v.push_back(&foo2);
v.push_back(&foo3);
하지만 컴파일러가 C_Foo에 C_Foo_1에서 이동하는 방법을 잘하지 아마도 때문에, 컴파일 오류를 얻을 : 나는 다음 시도했습니다.
이렇게 할 수 있습니까?
foo1.do_stuff();
foo2.do_stuff();
foo3.do_stuff();
감사를 도와 : 나는 foo1은 .. 푼을 통해 루프 수 등과 같은 상투적 인 코드를 복사하여 붙여 넣기 할 필요없이, 그들 모두에서 동일한 작업을 수행합니다.