Witam,
od jakiegoś czasu uczę się OOP. Jest to dla mnie całkiem nowy temat (wcześniej 100% proceduralnie) i nie czuję się jeszcze do końca swobodnie w tym środowisku, z czego wynikają pewne problemy...takie jak ten, z którym dzisiaj przychodzę.
Piszę prosty plugin, który miałby symulować księgarnię. Do tej pory szło w miarę gładko, jednak kiedy chciałem zaimplementować dodawanie nowej książki przy pomocy polimorfizmu, natrafiam na błąd, którego nie potrafię naprawić
error: no matching function call to 'Ksiazka_Sportowa::Ksiazka_Sportowa()'
Wydaje się, że istnieją rozbieżności w przekazywanych parametrach, jednak próbowałem je korygować na rozmaite sposoby - bezskutecznie.
Na chwilę obecną logika skryptu wygląda następująco: po odpaleniu ukazuje się menu z opcjami - obecnie dostępne jest jedynie dodanie nowej książki. Po wybraniu tej opcji ukazuje się kolejne menu, w którym wybieramy jaki GATUNEK książki chcemy dodać. Po wybraniu np. sportowej przy pomocy polimorfizmu kierujemy się do odpowiedniego formularza w celu uzupełnienia danych. Na końcu całość trafia do odpowiedniego vectora (jeszcze nie dodane).
https://pastebin.com/RKBD5YCR
WERSJA PO POPRAWKACH:
https://github.com/MAGNET1/avl
błąd dotyczy linijki nr 31 i 37
Mój zestaw pytań:
1. Czego dokładnie dotyczy ten błąd i jak najlepiej sobie z nim radzić
2. Czy polimorfizm został użyty w tym przypadku poprawnie - może zasadnym byłoby użycie innego rozwiązania?
3. Czy w kodzie dostrzegasz jeszcze jakieś nieścisłości? Coś, co możnaby napisać lepiej? [tak jak mówiłem, paradygmat obiektowy nie jest mi jeszcze w pełni przyjazny, dlatego z chęcią przyjmę każdą radę dotyczącą tego, jak należy pisać]
4. Zastanawia mnie, jaki jest lepszy sposób na napisanie "menu" - wydaje mi się, że można to zrobić lepiej, jednak nie wiem jak
Jestem pewien, że na tym forum aktywna jest masa doświadczonych programistów, która pomoże rozwiązać ten problem :)
Z góry dziękuję i pozdrawiam!