Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
binarny "operator": nie zdefiniowano operatora, który przyjmuje operand po lewej stronie typu "type" (lub nie ma dopuszczalnej konwersji)
Uwagi
Aby użyć operatora, musisz przeciążyć go dla określonego typu lub zdefiniować konwersję na typ, dla którego zdefiniowano operator.
C2678 może wystąpić, gdy operand po lewej stronie jest kwalifikowany const, ale operator jest zdefiniowany do podjęcia argumentu innego niż const.
Przykłady
Poniższy przykład generuje kod C2678 i pokazuje, jak go naprawić:
// 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 może również wystąpić, jeśli nie przypniesz natywnego elementu członkowskiego przed wywołaniem funkcji składowej.
Poniższy przykład generuje kod C2678 i pokazuje, jak go naprawić.
// 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;
};