簡體   English   中英

為模板類創建構造函數,該類調用向量中的模板初始化

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

如果我想創建一個能夠調用模板構造函數的模板類(在類構造函數內),這是這樣做的方法嗎? 還是有更好的解決方案?

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&並期望呼叫者給您一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM