에 생성 구성 파일 (ROS 매개 변수). 이 템플릿 클래스가 아닌 더 논리의 유형을 결정 :통화 기능 (11) 템플릿 클래스와 런타임에 결정 유형과의 인스턴스화 ++ 나 C에 대한 까다로운 질문이 실행
클래스 정의 :
전형적인 코드는template<typename T>
class MyClass {
//[...]
}
: (물론) 컴파일되지
/* [Read parameter and write result to bool use_int] */
std::unique_ptr<MyClass> myclassptr {nullptr};
if(use_int) {
myclassptr.reset(MyClass<int>);
} else {
myclassptr.reset(MyClass<double>);
}
myclassptr->foobar();
/* [more code making use of myclassptr] */
그래서이 코드가되고, unique_ptr 템플리트가 템플리트 유형으로도 지정되어야하기 때.입니다. 그러나 reset
을 사용하여 할당 된 모든 객체에 대해 템플리트 유형이 동일해야하는 문제가 발생합니다.
한 가지 추악한 해결책은 코드 myclassptr->foobar();
과 다음 코드를 if/else의 각 분기로 복사하는 것입니다. 실제로는별로 좋지 않습니다.
나는이에 대한 해결책 비슷한보고 싶습니다 : 내가 지금까지 읽은 내용
/* [Read parameter and write result to bool use_int] */
MyClass<use_int ? int : double> myclass;
myclass.foobar();
이런 일이 가능하지 않다는 것이다.
아무에게도 좋은 해결책이 있습니까?
아마도 공통 기본 클래스 : 템플릿 클래스 MyClass : public IClass; –
juanchopanza
이것은 무엇을위한 인터페이스입니다. – Xeo