[英]Do templates need overloaded constructors?
我剛看完一些模板視頻,我想我錯過了一些概念。 為什么不調用構造函數,或者為什么在構造函數沒有使用所需的數據類型重載時不創建對象? 由於我正在編寫<int>
,編譯器是否知道我將處理一個int?
template <class T>
class Generic {
T var;
public:
Generic(){cout << "ctor called " << endl;}
//Generic (T v) {var = v;}
};
int main () {
Generic<int> generic1();
}
我不能創建這樣的對象然后通過setter修改T var的值嗎? 為什么我需要一個重載的構造函數,例如Generic<int> generic1(9);
?
這是一個最令人煩惱的解析問題。
當然你可以通過默認的構造函數初始化對象,然后通過setter修改值,這里的問題是你沒有定義變量。 Generic<int> generic1();
是函數聲明,名為generic1
,不帶參數並返回Generic<int>
。
你想要的是什么
Generic<int> generic1;
要么
Generic<int> generic1{}; // since C++11
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.