/ Sobrecarga de operador binário e polimorfismo - c ++, polimorfismo, sobrecarga de operador

Sobrecarga e polimorfismo do operador binário - c ++, polimorfismo, sobrecarga do operador

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 № 1

Aqui 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.