私はテンプレート関数を書いています。テンプレート変数をゼロに初期化したいと思います。私はゼロに等しい変数を設定することを考えて、その後、クラスタイプが「ゼロ」の独自の定義を定義できました。クラスをゼロとして割り当てることを許可する
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;'は 'data'に' 0'を代入するのではなく、 '0'から' data'を構築しようとしていますが、混乱します) – user2357112
Hmmm、プリミティブ。 – Azmisov