我希望有一個帶有模板構造函數且沒有參數的非模板類。據我了解,這是不可能的(因為它會與默認構造函數發生沖突- 是嗎?),解決方法如下:class A{ template <typename U> A(U* dummy) { // Do something }};也許對此有更好的選擇(或更好的解決方法)?
3 回答

largeQ
TA貢獻2039條經驗 獲得超8個贊
在調用構造函數模板時,無法顯式指定模板參數,因此必須通過參數推導來推導它們。這是因為如果您說:
Foo<int> f = Foo<int>();
的<int>是該類型的模板參數列表Foo,而不是它的構造函數。構造函數模板的參數列表無處可去。
即使有解決方法,您仍然必須傳遞參數才能調用該構造函數模板。尚不清楚您要實現的目標。

米琪卡哇伊
TA貢獻1998條經驗 獲得超6個贊
您可以創建模板化工廠函數:
class Foo
{
public:
template <class T> static Foo* create() // could also return by value, or a smart pointer
{
return new Foo(...);
}
...
};
- 3 回答
- 0 關注
- 774 瀏覽
添加回答
舉報
0/150
提交
取消