2

当我想用模板类型定义向量的模板类型时会发生什么?我有一个类 Customer ,它是模板化的,因此构造函数可以采用 type 的参数vector<T>。现在我想实例化一个 Customer 类型的全局 Vector 并发现自己想要输入vector<Customer<Customer<Customer<etc<etc>>>>> .

我知道这可能是一个愚蠢的问题,但我很想对我发现的这个小泡菜有一个很好的简明解释。

提前致谢...

4

1 回答 1

1

如果你想要一个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 >() );
于 2013-08-12T00:26:24.800 回答