Przeciążanie operatorów i konwersja typów

0

Witam.

Stworzyłem sobie klasę bazową, nazwijmy ją bazowa, oraz dwie dziedziczące - pochodna1 i pochodna2;
Teraz, chciałbym aby można było wykonywać operacje +,= i += na obiektach obydwu typów.
O ile dokonywanie takich operacji jest proste w przypadku gdy dotyczy tego samego typu, o tyle trafiłem na problem dotyczący dokonywania działań na obu typach.
Treść::

#include<stdio.h>

class bazowa
{
public:
    int a;
    double b;

protected:
    double c;

};

class pochodna2;

class pochodna1:public bazowa
{
public:
    int d;
    double e;
public:
    pochodna1();
    
    pochodna1(int x, double y):d(x),e(y){};
    pochodna1(pochodna2& dd){
    
    };

    void operator=(const pochodna1& dd)
    {
        d=dd.d;
        e=dd.e;
    };

    pochodna1 operator+(pochodna1& dd)
    {
        return pochodna1(d+dd.d,e+dd.e);
    };
    
    pochodna1 operator+=(pochodna1 &dd)
    {
        d+=dd.d;
        e+=dd.e;
    
        return dd;
    };
    
};

class pochodna2:public bazowa
{
public:
    int f;
    double g;

    pochodna2(){};
    pochodna2(int x, double y):f(x),g(y){};

    friend class pochodna1;
    
    pochodna2 operator+=(pochodna2 &dd)
    {
        f+=dd.f;
        g+=dd.g;
    
        return dd;
    };
    
};

void main()

{

    pochodna1 a1(4,3),a2(6,8);
    pochodna2 b1(2,3),b2(3,4);
    
    a1=a2+b1;
};

No i w taki sposób to nie działa. Domyślam się, że po prostu operator dodawania w tej sytuacji nie funkcjonuje, bo nie obczaja opcji dodawania dwóch różnych obiektów. Fakt, że jest tu dokonana konwersja, ale on ciągle nie wiem co ma robić.
Jak temu zaradzić?
Czy dodać nowy operatro czy modyfikować ten i w jaki sposób?

Z góry dziękuję za pomoc.

0
class pochodna2:public bazowa
  {
   ...
   operator pochodna1() { return pochodna1(f,g); }
   ...
  };
0

No dobra, to jest robienie tego opratorem. A jak to zrobić za pomocą konstruktora?

0
class pochodna1:public bazowa
  {
   ...
   pochodna1(const pochodna2 &dd) ... 
   pochodna1 operator+(const pochodna1 &dd)const ...
   ...
  };

1 użytkowników online, w tym zalogowanych: 0, gości: 1