Sınıf bigInt için "+" yüklemeyi deniyorum (uzun bir int kaydetmek için bağlantıyı kullanın). Aşağıda gösterildiği gibi x1, x2 toplamını döndürün. Neden nesneyi iade edemiyorum?
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;
}
Ama ana işlevi
, toplamı hiçbir şey gibi görünüyor, ieit sadece cout a + b = ana işlevi (not hiç çıkış toplamı çıkış şey yok olduğu): Benvoid 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");
}
aşırı "< <" ve ">>" zaten. Ama neyin yanlış olduğunu anlamıyorum. Herhangi bir yardımı takdir edeceğim.
Öneriler için teşekkürler. Ben aşırı yük "=" şimdi. Ve hatayı works.But "= b toplamı" Yukarıdaki yanlış olabilir ne olduğunu tahmin çalışılıyor
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;
}
sana" ne demek istiyorsunuz ihtiyacı toplamı ana fonksiyona alamaz ". Derleyici hatası, çalışma zamanı hatası? Ne oluyor? – jpo38
Zayıf ifadem için üzgünüm ve sorumu değiştirdim. Aslında, hata, toplamın ana işlevde "cout" olamamasıdır. – Louise
Görev operatörünüzde es1’in bulunması ne demektir?Nesnelerinizde neler olduğunu görmek için bir hata ayıklayıcı kullanmak isteyebilirsiniz. – jpo38