Ich versuche, "+" für die Klasse bigInt zu überladen (verwenden Sie Linkedlist, um einen langen int zu speichern) .Ich gebe die Summe von x1, x2 in der Funktion zurück, wie unten gezeigt.Warum kann ich mein Objekt nicht zurückgeben?
friend bigInt operator+(bigInt &x1,bigInt &x2){
bigInt sum;
int lenx1=x1.length();
int lenx2=x2.length();
int len_sum;
len_sum=lenx1>lenx2?lenx1:lenx2;
if(len_sum==lenx1){
for(int i=len_sum-1;i>=lenx2;--i){
sum.insert(0,x1.visit(i)->data);
}
for(int i=lenx2-1;i>=0;--i){
int add=x1.visit(i)->data+x2.visit(i)->data;
if(add>9){
sum.visit(i+1)->data+=1;
add-=10;
}
sum.insert(0,add);
}
}
else{
for(int i=len_sum-1;i>=lenx1;--i){
sum.insert(0,x2.visit(i)->data);
}
for(int i=lenx1-1;i>=0;--i){
int add=x1.visit(i)->data+x2.visit(i)->data;
if(add>9){
sum.visit(i+1)->data+=1;
add-=10;
}
sum.insert(0,add);
}
}
cout<<"sum="<<sum<<endl;//output is right here.
return sum;
}
Aber in Hauptfunktion Summe nichts zu sein scheint, ieit cout nur a + b = (wo Ruf auch alle Ausgangssummenausgang nichts) Hauptfunktion:
void main(){
bigInt a,b,sum;
cout<<"please input a big int a:"<<endl;
cin>>a;
cout<<"please input a big int b:"<<endl;
cin>>b;
sum=b+a;
cout<<a<<"+"<<b<<"="<<sum<<endl;
system("PAUSE");
}
Ich habe Überlastung "< <" und ">>" schon. Aber ich verstehe nicht, was hier falsch ist. Ich werde jede Hilfe zu schätzen wissen.
Danke für die Vorschläge.I Überladung "=" jetzt. Und „sum = b“ works.But die Fehler oben scheint :(
bigInt &operator=(bigInt &right)
{
if(this==&right) return *this;
clear();
bigInt resl;
int len=right.length();
for(int i=0;i<len;++i)
{
insert(i,right.visit(i)->data);
}
return *this;
}
Was meinst du mit „I kann die Summe in der Hauptfunktion nicht bekommen ". Compilerfehler, Laufzeitfehler? Was geschieht? – jpo38
Sorry für meinen schlechten Ausdruck und ich habe meine Frage ändern. Eigentlich ist der Fehler, dass die Summe in der Hauptfunktion nicht "cout". – Louise
Was ist es1, dass es in Ihrem Zuweisungsoperator sein soll?Vielleicht möchten Sie einen Debugger verwenden, um zu sehen, was in Ihren Objekten enthalten ist. – jpo38