[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 » |