私はオブジェクトを持っています
template <class FLOAT>
struct Cstruct {
Struct1<FLOAT> _var1;
Struct2<FLOAT> _var2;
Cstruct(){};
Cstruct(Struct1 var1,Struct2 var2):_var1(var1),_var2(var2){};
};
FLOAT は「double」または「int」にすることができます。Struct1 と Struct2 も FLOAT でテンプレート化されています。
今、私はグローバル変数も宣言しています
Cstruct<double> globalObj_d;Cstruct<int> globalObj_i;
main() の中に私が持っている
main(){
// some code
if double then call func<double>();
if int then call func<int>();
}
そして、テンプレート化された func() の中に私は持っています
template<class FLOAT> void func(){
// some code
Struct1<FLOAT> var1;
Struct2<FLOAT> var2;
Cstruct<FLOAT> localObj(var1,var2);
// now i want to assign "localObj" to the global object "globalObj_d"
if double then
globalObj_d = localObj;
if int then
globalObj_i = localObj;
}
と言うエラーが表示されます
error C2679: binary '=' : no operator found which takes a right-hand operand of type 'Cstruct<FLOAT>
これは、 Cstruct 内に "operator=" を明示的に記述する必要があるということですか? テンプレート化されたグローバルオブジェクトの私の理解には、一種の欠陥があるようです。どんな助けでも大歓迎です。