1
我有一個基本calss和2個派生類。我想實現一些乘法運算符,它可以用來乘以這兩個類的對象。多個派生類之間的C++運算符重載
class Base
{
public:
virtual ~Base() {}
virtual void print() = 0;
Base operator * (Base & b1, Base & b2) { return b1 * b2; } <---- this wont work because of pure virtual function
};
class D2;
class D1 : public Base
{
public:
void print() { ....}
D1 operator * (D1 & d) {//do some operation here}
D1 operator * (D2 & d) {//same as above...}
private:
int i;
};
class D2 : public Base
{
public:
void print() { ....}
D2 operator * (D1 & d) { ..... }
D2 operator * (D2 & d) { ..... }
private:
double j;
double m;
};
這是我最初的設計,但我知道它不是去工作,所以我會 什麼是實現一個很好的設計?有沒有辦法使用模板來實現這一點? 謝謝!
你有沒有考慮過一個外部'operator *'這不是兩個類的方法,但可能是兩個朋友? –