我有对象
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=”?我对模板化和全局对象的理解似乎有点缺陷。任何帮助将不胜感激。