Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
binary 'operator' : no operator defined which takes a left-hand operand of type 'type' (or there is no acceptable conversion)
Poznámky
Chcete-li operátor použít, je třeba jej přetížit pro daný typ nebo definovat převod na typ, pro který je operátor definován.
C2678 může nastat, když je levý operand kvalifikovaný, ale operátor je definován tak, aby přebíjel argument non-const.
Příklady
Následující příklad vygeneruje C2678 a ukazuje, jak ho opravit:
// C2678a.cpp
// Compile by using: cl /EHsc /W4 C2678a.cpp
struct Combo {
int number;
char letter;
};
inline Combo& operator+=(Combo& lhs, int rhs) {
lhs.number += rhs;
return lhs;
}
int main() {
Combo const combo1{ 42, 'X' };
Combo combo2{ 13, 'Z' };
combo1 += 6; // C2678
combo2 += 9; // OK - operator+= matches non-const Combo
}
C2678 může dojít také v případě, že před voláním členské funkce nepřipnete nativního člena.
Následující příklad vygeneruje C2678 a ukazuje, jak jej opravit.
// C2678.cpp
// compile with: /clr /c
struct S { int _a; };
ref class C {
public:
void M( S param ) {
test = param; // C2678
// OK
pin_ptr<S> ptest = &test;
*ptest = param;
}
S test;
};