2013-04-26 38 views
3

如何更改下面的代碼以允許使用模板構造函數創建基本對象 ?C++如何調用模板化構造函數

struct Base { 
template <typename T> 
Base(int a) {} 
}; 

int main(int argc, char const *argv[]) 
{ 
    Base *b = new Base<char>(2); 
    delete b; 
    return 0; 
} 

回答

-1

此線程似乎回答你的問題:

C++ template constructor

的底線是,它似乎並沒有得到支持;目前還不清楚它會實現什麼。

+0

有時構造處理多種類型,但該數據僅用於暫時,所以其本身作爲模板類是reduntant。我猜想沒有什麼大的需求,但它是有道理的。 – iPherian 2016-11-03 22:42:21

0

這個問題有點含糊。您是否打算用「T a」替換Base ctor中的「int a」?如果是這樣,你可能想使用函數模板類型推斷,像這樣:

template<typename T> 
Base<T> CreateBase(T a) 
{ 
    return new Base<T>(a); 
} 

// Call site avoids template clutter 
auto base = CreateBase(2); 
相關問題