Eu estou tentando fazer um operador que me permitirá adicionar um inteiro a uma das minhas classes, mas estou tendo problemas da seguinte forma.
struct Base
{
//Will have value of zero
};
struct Derived : public Base
{
int value_;
};
int & operator+=(int & num, Base & b);
int & operator+=(int & num, Derived & d);
Com a implementação do operador de
int & operator+=(int & num, Base & b)
{
return num;
}
int & operator+=(int & num, Derived & d)
{
num += d.value_;
return num;
}
Então eu tenho um vetor e estou tentando iterar através dele e adicionar todos os valores para um inteiro. No entanto, mesmo aqueles que são do tipo Derived não irão alterar a soma.
Como posso tornar o operador sobrecarregado polimórfico?
Respostas:
0 para resposta № 1Aqui está um bom dr. artigo dobbs que apresenta 3 soluções para o seu problema http://drdobbs.com/cpp/200001978 Um deles, e eu estava pensando a mesma coisa, é que você pode confiar em seus operadores em funções de membros virtuais ou funções auxiliares.