/ / Бінарне перевантаження оператора та поліморпізм - c ++, поліморфізм, перевантаження оператора

Перевантаження бінарних операторів та поліморфізм - c + +, поліморфізм, перевантаження оператором

Я намагаюся зробити оператора, який дозволить мені додати ціле число до одного зі своїх класів, але у мене виникають проблеми наступним чином.

    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);

З реалізацією оператора

int & operator+=(int & num, Base & b)
{
return num;
}

int & operator+=(int & num, Derived & d)
{
num += d.value_;
return num;
}

Отже, у мене є вектор, і я намагаюся перебрати його і додати всі значення до одного цілого числа. Однак навіть ті, які є похідними типу, не змінять суму.

Як я можу зробити оператора перевантаження поліморфним?

Відповіді:

0 для відповіді № 1

Ось приємний д-р. стаття dobbs, яка представляє 3 рішення вашої проблеми http://drdobbs.com/cpp/200001978 Одне з них, і я думав те саме, - це те, що ви можете покластися на своїх операторів на функції віртуальних членів або допоміжні функції.