Error del compilador C2297
'operador': operando derecho incorrecto
El operando derecho que se ha usado con operator
no es válido.
Por ejemplo, el compilador puede ver una declaración en la que se pretende una llamada de función.
El ejemplo siguiente genera el error C2297:
// C2297.cpp
struct MyStruct {
struct Help {
Help(float f) : m_f(f) {}
float m_f;
};
MyStruct(const Help &h) : m_f(h.m_f) {}
MyStruct(float f) : m_f(f) {}
MyStruct operator*(const MyStruct &f1) const {
return MyStruct(m_f * f1.m_f);
}
private:
float m_f;
};
int main() {
float f1 = 1.0f;
MyStruct m_MyStruct1 ( MyStruct::Help( f1 ) );
// try the following line instead
// MyStruct m_MyStruct1 = MyStruct::Help( f1 );
MyStruct m_MyStruct2 ( MyStruct::Help( f1 ) );
// try the following line instead
// MyStruct m_MyStruct2 = MyStruct::Help( f1 );
MyStruct m_MyStruct3 = m_MyStruct1 * m_MyStruct2; // C2297
}