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