C++ 在没有boost和c+的情况下安全地执行类型擦除+;0x
假设我有一个模板类C++ 在没有boost和c+的情况下安全地执行类型擦除+;0x,c++,inheritance,containers,auto-ptr,C++,Inheritance,Containers,Auto Ptr,假设我有一个模板类 template<class T> class A; template<> class A<int> { public: void print(){ std::cout << "I am an int !" << std::endl; } }; template<> class A<double> { public: void print
template<class T>
class A;
template<>
class A<int>
{
public:
void print(){ std::cout << "I am an int !" << std::endl; }
};
template<>
class A<double>
{
public:
void print(){ std::cout << "I am a double !" << std::endl; }
};
模板
甲级;
模板
甲级
{
公众:
void print(){std::cout看一下boost/any.hpp。我看了。这个问题的唯一答案是“滚动boost中已经存在的您自己的类”,无论您喜欢ptr\u vector
、shared\u ptr
、any
,等等。它们已经涵盖了这方面的所有基础。选择您最喜欢的并推出您自己的实现,然后使用它
编辑:一位评论者提到了TR1。好消息。TR1中有共享的\u ptr
。没有Boost?好吧,我想重新发明Boost中已经存在的东西…请注意TR1不一定是C++0x。如果出现错误,请使用新的(可能会导致内存泄漏和/或异常不安全)你的问题与类型擦除无关,而与智能指针无关。