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

慕婉清6462132
TA貢獻(xiàn)1804條經(jīng)驗 獲得超2個贊
在調(diào)用構(gòu)造函數(shù)模板時,無法顯式指定模板參數(shù),因此必須通過參數(shù)推導(dǎo)來推導(dǎo)它們。這是因為如果您說:
Foo<int> f = Foo<int>();
的<int>是該類型的模板參數(shù)列表Foo,而不是它的構(gòu)造函數(shù)。構(gòu)造函數(shù)模板的參數(shù)列表無處可去。
即使有解決方法,您仍然必須傳遞參數(shù)才能調(diào)用該構(gòu)造函數(shù)模板。尚不清楚您要實現(xiàn)的目標(biāo)。

慕田峪9158850
TA貢獻(xiàn)1794條經(jīng)驗 獲得超7個贊
您可以創(chuàng)建模板化工廠函數(shù):
class Foo
{
public:
template <class T> static Foo* create() // could also return by value, or a smart pointer
{
return new Foo(...);
}
...
};
- 3 回答
- 0 關(guān)注
- 443 瀏覽
添加回答
舉報
0/150
提交
取消