Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
binário «operador» : nenhum operador definido que utilize um operando à esquerda do tipo «tipo» (ou não existe uma conversão aceitável)
Observações
Para usar o operador, você deve sobrecarregá-lo para o tipo especificado ou definir uma conversão para um tipo para o qual o operador está definido.
C2678 pode ocorrer quando o operando esquerdo é qualificado por const, mas o operador é definido para usar um argumento não-const.
Exemplos
O exemplo a seguir gera C2678 e mostra como corrigi-lo:
// 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 também pode ocorrer se não fixares um membro nativo antes de chamar uma função de membro nesse elemento.
O exemplo a seguir gera C2678 e mostra como corrigi-lo.
// 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;
};