lundi 7 mai 2018

Inherit operators defined outside class

In this minimal example I have a class A with an operator + defined outsise of it:

template<class T> class A {};

template<class T1, class T2> void operator+(A<T1> a, A<T2> b) {}

template<class T> class B : public A<T> {};

int main(int, char**) {
    B a, b;
    a + b;
    return 0;
}

I've tried to create an implicit conversion from B to A but it requires the operator+ to be a friend of A and be defined inside A which will cause problems when more than one instance of A<...> gets instantiated.

So, is there any other way to do this without having to define the operator+ again?

Thank you in advance for any help.

Aucun commentaire:

Enregistrer un commentaire