0
我正在學習C++,我試圖做一些多態性和運算符重載,我有一些問題。抽象類重載算術運算符
我在做什麼這裏是被叫號碼,並呼籲敏,我需要重載運算符+,一類衍生化的抽象基類 - 爲了與MyInt
號碼,MyDouble
數字操作...等
後閱讀很多帖子我被困在這個錯誤error: invalid operands of types 'Number*' and 'Number*' to binary 'operator+' cout << n + m << endl;
我該如何做這項工作?
我知道這個工程使用的模板,但我不能在這裏使用它,因爲本練習的一點是要創造這樣MyStack<Number*>
持有不同的數據類型
#include <cstdlib>
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
class Number {
public:
virtual Number* operator+(Number* n) = 0;
virtual string toString() = 0;
friend ostream& operator<<(ostream& os, Number* n){
return os << n->toString();
}
};
class MyInt: public Number{
public:
int value;
MyInt(int e){
value = e;
}
virtual ~MyInt(){}
int getNum(){ return value;}
Number* operator+(Number* n){
MyInt* a = (MyInt*) n;
return new MyInt(value + a->value);
}
string toString(){
ostringstream oss;
oss << value;
return oss.str();
}
};
int main(int argc, char** argv) {
Number* n = new MyInt(5);
Number* m = new MyInt(3);
cout << "N: " << n << endl;
cout << "M: " << m << endl;
cout << n + m << endl;
return 0;
}
當我把2個參數拋出下一個錯誤'數字* MyInt ::運算符+(數字*,數字*)'必須採取零或一個參數 數字*運算符+(數字* n,數字*米) – Frank
對不起對於醜陋的代碼,我是新來的C++,我會看看有關dynamic_cast的信息。感謝您的答覆 – Frank