有什么黑客我可以用来做到这一点:
template <class TYPE>
class Hello
{
TYPE _var;
};
Run Code Online (Sandbox Code Playgroud)
我想要一种存储方式
Hello<int> intHello and Hello<char*> charHello
Run Code Online (Sandbox Code Playgroud)
进入同一个容器,如队列/列表.
Jam*_*lis 10
不,因为它们是不同的,完全不相关的类型.
但是,您可以使用继承和智能指针:
class HelloBase
{
public:
virtual ~HelloBase();
}
template <class TYPE>
class Hello : public HelloBase
{
TYPE _var;
}
std::vector<boost::shared_ptr<HelloBase> > v;
Run Code Online (Sandbox Code Playgroud)
shared_ptr您的实现可以在std::tr1或std命名空间中支持; 你必须检查.
是的,有点 - 但你可能不想.尽管他们来自同一个模板开始,Hello<int>并且Hello<char *>是完全独立的和无关的类型.包含两者的集合是异构的,包含所有需要的问题.
如果你坚持这样做,为了合理地干净利落,你通常会创建像队列/列表一样的东西Boost::any.