当我想用模板类型定义向量的模板类型时会发生什么?我有一个类 Customer ,它是模板化的,因此构造函数可以采用 type 的参数vector<T>
。现在我想实例化一个 Customer 类型的全局 Vector 并发现自己想要输入vector<Customer<Customer<Customer<etc<etc>>>>>
.
我知道这可能是一个愚蠢的问题,但我很想对我发现的这个小泡菜有一个很好的简明解释。
提前致谢...
如果你想要一个vector
特定类型的,Customer
那么一切都很简单:
template < typename T >
class Customer
{
public:
Customer( std::vector< Customer< T > > vec );
}
std::vector< Customer<CustomerType> > v;
或者
std::vector< Customer<CustomerType>* > v;
但是,如果您想要Customer 模板的不同实例,那么除了为类定义一些公共基础并存储它之外别无他法:
class CustomerBase
{
/* common functionality */
};
template < typename T >
class Customer : public CustomerBase
{
}
std::vector< CustomerBase* > v;
v.push_back( Customer< TypeA >() );
v.push_back( Customer< TypeB >() );