为模板类创建一个构造函数,该构造函数在向量中调用模板初始化

Creating a constructor for a template class which calls the template initialization within a vector

本文关键字:构造函数 调用 初始化 向量 创建 一个      更新时间:2023-10-16

如果我想创建一个能够调用模板构造函数的模板类(在类构造函数中(,这是这样做的方法吗?还是有更好的解决方案?

template<typename T>
class A{
public:
    A(int n): mVector(n) {}                //normal constructor
    A(int n, auto a): mVector(n, T(a)) {}  //constructor with template initialization
private:
    std::vector<T> mVector;
};

还有没有办法将其扩展到任意数量的参数 T(a,b,c,...(,而无需为每个情况提供构造函数?

也许您正在搜索以下内容:

template <typename... Args>
A(int n, Args&&... args) : // First argument should probably be std::size_t
    mVector(n, T(std::forward<Args>(args)...)) {}

但是,您可以只const T&并期望呼叫者给您一个。