Перегрузка оператора присваивания для указателей на два разных класса

Мой вопрос: яЯ пытаюсь перегрузить оператор присваивания для указателей на два разных класса. Вот пример:

dc.h:

#ifndef DC_H_
#define DC_H_

#include "ic.h"

class dc {

double d;
char c;

public:

dc(): d(0), c(0) { }

dc(double d_, char c_): d(d_), c(c_) { }

dc* operator=(const ic* rhs);

~dc() { }

};

#endif /* DC_H_ */

класс ic.h:

#ifndef IC_H_
#define IC_H_

class ic {

int i;
char c;

public:

ic(): i(0), c(0) { }

ic(int i_, char c_): i(i_), c(c_) { }

~ic() { }

};

#endif /* IC_H_ */

dc.cpp:

#include "dc.h"

dc* dc::operator=(const ic* rhs) {
d = rhs->i;
c = rhs->c;  
return this;
}

ic.cpp:

#include "ic.h"

main.cpp:

#include "dc.h"
#include "ic.h"

#include

int main() {

dc DC;
ic IC;

dc* dcptr = &DC;
ic* icptr = ⁣

dcptr = icptr;

return 0;
}

Я получаю следующее сообщение об ошибке:

ошибка: не могу конвертироватьIC*' кОкруг Колумбия*' в назначении

Все это работает, если я делаю это со ссылками вместо указателей. К сожалению, поскольку я хотел бы использовать указатели на ic и dc в качестве членов в другом классе, я не могу использовать ссылки, так как ссылки в качестве членов должны быть инициализированы, и после инициализации их нельзя изменить для ссылки на другой объект. Я'Я хотел бы иметь возможность выполнять арифметические операции с IC и DC, например:

dc *d1, *d2, *d3;
ic *i1, *i2, *i3;
*d1 = (*d1)*(*i1) + (*i2)*(*d2) - (*d3)*(*i3);

Однако я хочу, чтобы мой код выглядел красиво и нене хочу иметь(*)*(*) повсюду. Вместо этого что-то вроде этого:

d1 = d1*i1 + i2*d2 - d3*i3;

Это причина, почему яЯ хотел бы сделать это. Пожалуйста, дайте мне знать, если это вообще возможно. Мне кажется, что компилятор хочет вызвать указатель по умолчанию для назначения указателя вместо перегруженного.

Заранее спасибо за помощь!

Ответы на вопрос(1)

Ваш ответ на вопрос