Krótki wstęp: program obsługuje sklep i robię teraz klasy sprawdzające promocje - jest bazowa z jakimś ogólnym rabatem i potomne, bardziej rozwinięte. Wszystkie one mają funkcje 'void oblicz_procent(różne-typy-argumentów)', która w bazowej jest virtualna.
Trochę kodu:
Kod PHP:
//Klasa-bazowa.h:
virtual void oblicz_procent(void);
//Klasa-bazowa.cpp:
void Klasa-bazowa::oblicz_procent(void)
{
(...)
}
//Klasa-pochodna.h:
void oblicz_procent (Klient * Konto_klienta);
//Klasa-pochodna.cpp:
void Klasa-pochodna::oblicz_procent (Klient * Konto_klienta)
{
(...)
}
//główna funkcja:
(...)
Klasa-bazowa * Karta_Stalego_Klienta = new Klasa-bazowa();
if(Karta_Stalego_Klienta->sprawdza-czy-nalezy-sie-inna-promocja())
{//jesli tak
delete Karta_Stalego_Klienta;
Karta_Stalego_Klienta = new Klasa-pochodna();
Karta_Stalego_Klienta->oblicz_procent(Konto_Klienta); // BŁĄD - kompilator ciągle 'patrzy' na funkcję z klasy bazowej i nie pasuje mu argument 'Konto_Klienta'
}
oczywiście nazwy klas zmieniłem tu, żeby były bardziej czytelne
Nie ogarniam c++ i strasznie ciężko przyswajam ten język, więc pewnie popełniam tu jakiś głupi, prosty błąd. Niemniej nie potrafię go znaleźć.. ;d
Będę bardzo wdzięczny za jakąś pomoc
Zakładki