질문은 MS Visual C++ 11에서 개발 된 코드로 부스트가없는 STL에만 액세스 할 수 있습니다.템플릿이 다른 객체를 STL 컨테이너에 저장하는 방법
약이 헤더로, 래퍼 템플릿 클래스가 :
template <typename Payload>
class Wrapper {
Payload p;
std::string src;
Wrapper(std::string, Payload);
Payload get(); // returns payload
void set(Payload); // replaces payload
void operator()(); // uses payload
}
Payload
아무것도 할 수있다 - 포인터, INT, 심지어 무거운 물체.
나중에 은 std::vector
과 같은 컨테이너에 있어야하지만 특정 매개 변수 유형과 관계 없습니다. 그리고 컨테이너가 균질 한 요소를 필요로하기 때문에 그것이 나에게 문제가된다. 제안 패턴에 사용되는 경우 요소의 기본 클래스처럼 보이기 때문에 벡터에서 사용할 때 그 캐스팅이 필요 (?) -
나는, 그러나 그것은 나에게 방법 get()
및 set()
몇 가지 문제를 제공, 기본 클래스 제안 like this from KennyTM을 시도 그 대답.
부스트를 피할 수 있도록 직접 구현할 수있는'boost :: any'와 같은 타입 소거 클래스가 필요합니다. – Nawaz
KennyTM 솔루션은 실제로 가상 기능을 사용할 수있는 경우에만 적용됩니다. 함수의 반환 유형이 호환되지 않기 때문에 여기서는 사용할 수 없습니다. 또한 개체가 템플릿 매개 변수에 따라 달라지는 것은 중요하지 않습니다. 그것들은 여전히 크기가 다른 구별되는 유형이며 컨테이너에서 가장 중요한 것입니다. – pmr