У меня есть объектприсвоение локальной переменной глобальной переменной в C++
template <class FLOAT>
struct Cstruct {
Struct1<FLOAT> _var1;
Struct2<FLOAT> _var2;
Cstruct(){};
Cstruct(Struct1 var1,Struct2 var2):_var1(var1),_var2(var2){};
};
FLOAT может быть "двойной" или "INT". Struct1 и Struct2 также шаблонизируются с помощью FLOAT.
теперь я также глобальная переменная, объявленная
Cstruct<double> globalObj_d;Cstruct<int> globalObj_i;
внутри основной() У меня есть
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>
делает это означает, что я должен явно написать «operator =» внутри Cstruct? мое недооценивание шаблонизированного и глобального объекта, похоже, является некорректным. любая помощь будет очень признательна.
Пожалуйста, скажите мне, что это делает в C++: 'if double then'. Кажется, вы говорите на другом языке. – ondrejdee
Если строки операторов не являются C++, я просто дал псевдокод, чтобы объяснить проблему. Я просто создал пример проблемы, чтобы продемонстрировать проблему, с которой я столкнулся. – user1612986
Я получаю ошибку C2955: «Struct1»: использование шаблона класса требует, чтобы список аргументов шаблона на втором конструкторе CStruct - это именно ваш код? – doctorlove