[c++] Przeciążanie operatorów
Ostatnio zmodyfikowano 2015-04-09 18:49
| wojownik266 Temat założony przez niniejszego użytkownika | [c++] Przeciążanie operatorów » 2015-04-09 18:18:35 Napisałem program który bardzo ładnie się kompiluje, bez błędów ale uruchomić się go już nie da. Czy ktoś mógłby wskazać przyczynę i miejsce błędu oraz jak rozwiązać ten problem? Podejrzana instrukcja to przeciążony operator +.... #include <iostream>
 class Book
 {
 private:
 int a;
 int b;
 int c;
 public:
 Book();
 ~Book();
 Book operator +( Book & bo );
 void show();
 
 };
 Book::Book()
 {
 a = 10;
 b = 20;
 c = a + b;
 }
 Book::~Book()
 {
 
 }
 Book Book::operator +( Book & bo )
 {
 Book bum = bo + bo;
 return bum;
 }
 void Book::show()
 {
 std::cout << c << std::endl;
 }
 
 int main()
 {
 Book bo, ok, bk;
 bk = bo + ok;
 bk.show();
 
 std::cin.get();
 std::cin.get();
 return 0;
 }
 
 | 
|  | 
| pekfos | » 2015-04-09 18:28:43 | Book Book::operator +( Book & bo ){
 Book bum = bo + bo;
 return bum;
 }
 
 | 
 Nieskończona rekurencja. | 
|  | 
| Monika90 | » 2015-04-09 18:29:12 | 
|  | 
| wojownik266 Temat założony przez niniejszego użytkownika | » 2015-04-09 18:31:41 A jakby można to trochę inaczej napisać tak aby pozbyć się tej rekurencji? | 
|  | 
| pekfos | » 2015-04-09 18:36:21 Zapewne możesz robić tam coś z sensem. Np dodać do siebie jakieś składowe Book. | 
|  | 
| wojownik266 Temat założony przez niniejszego użytkownika | » 2015-04-09 18:42:57 Dziękuję za podpowiedzi. Teraz musi być już dobrze. No nie że tak jest? Book Book::operator +( Book & bo ){
 Book bum;
 bum.c = bo.a + bo.b;
 return bum;
 }
 
 | 
|  | 
| pekfos | » 2015-04-09 18:47:35 Nie bardzo.. No chyba, że takie zachowanie dodawania jest zamierzone. | 
|  | 
| wojownik266 Temat założony przez niniejszego użytkownika | » 2015-04-09 18:49:52 Taki miałem zamiar i teraz działa tak jak chciałem. Oczywiście jakiś inny dobry przykład mile widziany:) | 
|  | 
| « 1 » |