Как вызвать оператор как функцию в C ++

Я хочу вызвать определенный оператор определенного базового класса некоторого класса. Для простых функций это просто: я просто пишу SpecificBaseClass :: function (args); . Как мне реализовать то же самое для операторов без обмана приведения типов?

Изолированная проблема:

 class A
 {
 public:
     A operator+( const A &other ) const {...}
 };

 class B : public A
 {
 public:
     B operator+( const B & other ) const {...}

 };

 ...
  B a, b;
  B c = A::operator+( a, b ); //how this should be implemented? I get an error
 ...

Я получаю следующую ошибку от GCC4.5.1 :

error: no matching function for call to ‘A::operator+(B&, B&)’
note: candidate is: A A::operator+(const A&) const

Спасибо !


ИЗМЕНИТЬ
Я улучшил пример, чтобы лучше проиллюстрировать проблему.

11
задан Edwin Pratt 15 October 2018 в 13:58
поделиться