Ben C++ öğreniyorum ve bazı polimorfizm ve operatör aşırı yüklemeye çalışıyorum ve bazı sorunlar yaşıyorum.Özet sınıf aritmetik operatörü aşırı yükleme
Ne burada ne işim olduğunu Sayısı ve ben, operatör + aşırı gerekir MyInt adlı bir türevi, sınıf denilen soyut temel sınıfı - MyInt
numaraları, MyDouble
numaraları ile çalışabilmesi için ... vb
sonra Bu hataya takıldığım birçok gönderiyi okumak error: invalid operands of types 'Number*' and 'Number*' to binary 'operator+' cout << n + m << endl;
Bu işi nasıl yapabilirim?
bu şablonları kullanarak çalıştığını biliyorum ama bu excercise noktası MyStack<Number*>
gibi bir şey yaratmaktır çünkü sen çok yanlış yaptı farklı veri türleri
#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 argüman koyduğumda bir sonraki hata atar 'Number * MyInt :: operator + (Sayı *, Sayı *)' sıfır veya bir argüman almalıdır Number * operator + (Number * n, Number * m) – Frank
Üzgünüz çirkin kod için, ben C++ için yeni, dynamic_cast hakkında bilgi bakacağız. cevabınız için teşekkürler – Frank