to po co mi plik: zwierze.cpp? Czy wystarczy tylko plik z deklaracjami?
Czy prywatne składniki (które są wspólne dla wszystkich klas pochodnych) raz jeden umieścić w abstrakcyjnej klasie i nie powtarzać ich deklaracji w klasach pochodnych?
jeśli includuję jakieś tam biblioteki, np: string czy cctype, to powinienem to zrobić w pliku: *.cpp?
klasa abstrakcyjna zwierze
- prywatne składniki klasy (dzięki temu wpiszę je tylko raz)
- funkcje pure virtual (tylko deklaracje)
- wszystko umieszczę tylko w pliku zwierze.h
/ \
/ \
/ \
klasa kot klasa ocelot
- funkcje wirtualne (def. i dekl.) - tak samo jak obok
Czyli rozumiem, że mogę np. zrobić to tak
Poniżej zawartość pliku z definicjami:KOD cpp: UKRYJvoid losuj_uszy(void) { ... }
void losuj_oczy(void) { ... }
void losuj_futro(void) { ... }
UnicodeString wyjmij_string(std::string &cos) { ... }
KOD cpp: UKRYJunsigned short int y;
if(k == K6)
{ y = 1+(rand()%6); }
if(k == K10)
{ y = 1+(rand()%10); }
if(k == K100)
{ y = 1+(rand()%100); }
return y;
KOD cpp: UKRYJclass kot : public zwierze
{
...
public:
...
enum rodzaj_kostki {K6, K10, K100};
unsigned short int rzut_kostka(rodzaj_kostki k);
};
KOD cpp: UKRYJMemo1->Lines->Add(wsk->wyjmij_string(dachowiec.uszy));
Dlaczego klasa kot definiuje swoje rodzaj_kostki i rzut_kostka()?
Serio? Użycie wyjmij_string() ma być prostsze niż po prostu:KOD cpp: UKRYJMemo1->Lines->Add(dachowiec.uszy.c_str());
(...) i nadal otrzymuję ten sam komunikat: [BCC32 Error] Unit1.cpp(32): E2247 'kot::uszy' is not accessible
Czy dobrze myślę?
(...) ale przecież staram się ją wyjąc przy pomocy funkcji należącej do klasy "kot".
KOD cpp: UKRYJMemo1->Lines->Add(dachowiec.wyjmij_string(dachowiec.uszy));
Powrót do Ogólne problemy z programowaniem
Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość