Compiler Error C2297
'operator' : bad right operand
The right operand used with operator
is invalid.
For example, the compiler may see a declaration where you intended a function call.
The following sample generates 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
}