问题描述
我正在尝试创建一个“对象管理器”,该对象将创建并存储模板类的实例。该类采用一个模板参数,并从基类继承,以允许将具有不同模板args的实例存储在同一容器中。用户将在可变参数模板函数中提供将用作模板参数的类型。
下面是一个说明问题的最小示例:
struct A
{
int m_a = 0;
};
template<typename T>
struct B : public A
{
int m_b = 1;
T m_t;
};
template<typename... Types> std::vector<A*> generate_a_vec()
{
std::vector<A*> a_vec; // <--- Need to initialize with a new B<T> for each T in "Types"
return a_vec;
}
int main()
{
std::vector<A*> a_vec = generate_a_vec<int,float,bool>();
for(A* a : a_vec)
{
std::cout << a->m_a << std::endl;
}
return 0;
}
假设我们将使用的每个T
都有一个默认构造函数。是否可以使用折叠表达式为B<T>
中的每种类型使用new
创建一个Types
的{{1}}并将结果的指针添加到generate_a_vec()
中的向量?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)