C++ 将可变模板类存储到std::vector中 模板 分类{ //... }; 类存储{ 模板 void build\u something\u class\u obj(){ //... } 私人: std::向量m_容器; };

C++ 将可变模板类存储到std::vector中 模板 分类{ //... }; 类存储{ 模板 void build\u something\u class\u obj(){ //... } 私人: std::向量m_容器; };,c++,C++,我如何存储这样的类?Args可能会有所不同,因此我无法将存储模板类设置为某些内容是模板而不是类型,但在向量中只能有一种类型的对象。某物的不同实例化是完全不相关的,除非您使用基类: template<typename...Args> class something { //... }; class storage { template<typename...Args> void build_something_class_obj() { /

我如何存储这样的类?Args可能会有所不同,因此我无法将存储模板类设置为

某些内容
是模板而不是类型,但在
向量中只能有一种类型的对象
某物的不同实例化是完全不相关的,除非您使用基类:

template<typename...Args> 
class something {
     //...
};

class storage {

  template<typename...Args>
  void build_something_class_obj() {
     //...
  }
private:
  std::vector<???> m_container;
};
struct something_base{};
模板
给某物分类:某物{
//...
};
现在,您可以拥有一个
std::vector
,并将
某物的不同表示的实例推送到该向量中


类型擦除有多种选择(例如
std::any
std::variant
)。什么是最合适的取决于你想对向量中的元素做什么。

有些东西是模板而不是类型。您希望在向量中存储什么类型?
build\u something\u class\u obj
应创建
something
的实例并将其推入向量中?你能再给我一点背景吗?当你想在同一个向量中有不同类型的对象时,你需要某种类型的擦除。我正在使用
something
如下:
typedef something type
,然后为给定类型创建一个对象。我正在制作一个小型数据库,并使用
class something
来存储一个表,因此我需要
存储
来存储所有tables@not_so_smart什么是
/*类型*/
?对
build\u something\u class\u obj
的每次调用都是一组不同的类型吗?或者它总是一样的?它是一组不同的类型,描述了表的类型
build\u something\u class\u obj
应该生成一个对象并将其推送到vector。@不太聪明,那么我不理解你的评论。我的回答试图解释如何在向量中使用不同的参数来创建一个新类型(
typedef something My_type
)和类型为
My_type
的对象,然后将对象指针推入向量。对不起,我不太清楚。
struct something_base {};

template<typename...Args> 
class something : something_base {
     //...
};