我正在寫一個模板函數,我想將一個模板變量初始化爲零。我想設置的變量等於零,然後讓類類型定義自己的「零」的定義:允許類被分配爲零
T data = 0;
我試圖重載賦值運算符:
class Example{
public:
int data;
Example(){}
Example& operator=(int v){
data = v;
return *this;
}
};
template <class T> T test(){
T data = 0;
return data;
}
int main(int argc, char** argv){
double v1 = test<double>();
Example v2 = test<Example>();
return 1;
}
...但編譯器給我「錯誤:從'int'轉換爲非標量類型...」。我該如何做這項工作?還是有更好的方式來做我想做的事情?
也許你想要一個'int'作爲參數的構造函數。 –
這聽起來像你應該真的[值初始化](http://en.cppreference.com/w/cpp/language/value_initialization)該變量,而不是將其設置爲零。 (另外,'T data = 0;'試圖從'0'構造'data',而不是將'0'分配給'data',這很讓人困惑。) – user2357112
嗯,好吧,我沒有意識到構造函數的語法工作原語。 – Azmisov