2012-05-18 46 views
2

我想要做这样的事情,但我不确定是否有可能。我无法在Google上找到任何信息。如果不知道模板类型,是否可以指向模板类?

template <typename T> 
class Container { 
public: 
    T *ptr; 
}; 

class Other { 
private: 
    Container *container_ref; 
} 

感谢您的帮助。

+0

这听起来像你真正想要的是运行时多态,而不是有时称为编译时多态的模板。 –

+0

当然!将“其他”设为模板。 –

回答

5

这不是,但如果你负责Container那么你可以使它从非模板化的基类继承,并保持一个指针。

+0

而实际上'shared_ptr'的实现是为了跟踪你分配的东西的类型,以便稍后可以进行非多态删除。 –

2

不是。模板不是类,它是如何构建类的说明。没有模板参数(无论是显式的还是暗示的)它都不完整。

你可以看看Boost::any寻找解决问题的办法。

+1

有一个原因,人们坚持把它称为类*模板*而不是模板*类* :)它确实是一个模板,而不是一个类! –

相关问题