比方說,我有,我想解方程的程序(像這樣)指針和引用+運算符重載
Number x;
Func fw = x * 4 + x * x;
std::cout << fw(6.0) << "\n\n";
因此,我從寫抽象基類,在這裏我都開始我需要解決這個方程。
class Base
{
public:
Base(){};
virtual Base* operator*(Base& x) = 0;
virtual Base* operator*(double x) = 0;
virtual Base* operator+(Base& x) = 0;
};
和班級數
class Number : public Base
{
public:
virtual Base* operator*(Base& x);
virtual Base* operator*(double x);
virtual Base* operator+(Base& x);
};
和類Func鍵與拷貝構造函數(或者至少,我思,它的拷貝構造函數)
class Func: public Base
{
Base * func;
public:
Func(Base* other)
{
func = other;
}
Func(Base& other)
{
func = &other;
}
virtual Base* operator*(Base& x){}
virtual Base* operator*(double x){}
virtual Base* operator+(Base&){}
};
所以,我的問題。我的程序適用於x*x
或x*4
,但是當我嘗試將它們結合使用時x*x + x*4
我遇到問題。
很明顯(或者不是)什麼is.After x*x
我的程序返回指針(基地*),並在我的重載運算符的問題,我只有(基地&)。 所以程序無法匹配任何重載的操作符。
下面是克利翁顯示我binary operator + can't be applied to the expression of type Base* and Base*
因此,解決方案可以是重載操作一次,但與參數(基地*),但我希望有一個更好的辦法來解決這個問題。在那兒?
例如,基本數據類型不支持直接添加float和int。取而代之的是一種促銷,int在這種情況下是浮動的。也許你可以用類似的方式解決問題。將您的不同類型提升爲相同類型,然後執行操作。 –