Compartilhar via


Erro do compilador C2803

'operator operator' precisa ter pelo menos um parâmetro formal de tipo de classe

O operador sobrecarregado não tem um parâmetro de tipo de classe.

Você precisa passar pelo menos um parâmetro por referência (não usando ponteiros, mas referências) ou por valor para poder escrever "a < b" (a e b sendo da classe de tipo A).

Se ambos os parâmetros forem ponteiros, esta será uma comparação pura de endereços de ponteiro e não usará a conversão definida pelo usuário.

O seguinte exemplo gera o erro C2803:

// C2803.cpp
// compile with: /c
class A{};
bool operator< (const A *left, const A *right);   // C2803
// try the following line instead
// bool operator< (const A& left, const A& right);