eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingdziedziczenie c++ › Re: dziedziczenie c++
  • Data: 2009-07-03 15:34:59
    Temat: Re: dziedziczenie c++
    Od: "larry2003" <l...@i...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]


    Użytkownik "Tomasz Bywalec" <t...@p...dont.spam.me.o2.pl> napisał w
    wiadomości news:h2kfh4$7tf$1@nemesis.news.neostrada.pl...
    > larry2003 pisze:
    > [...]
    >> i po dodaniuch tych trzech linijek w każdym *.h wracam do punktu wyjścia
    >> :)
    >>
    >> g++ -c silowy.cpp
    >> In file included from silowy.cpp:1:
    >> silowy.h:5: error: expected class-name before '{' token
    >> make: *** [silowy.o] Error 1
    >>
    >
    > Błąd występuje podczas kompilacji pliku silowy.cpp którego źródła nie
    > pokazałeś - przypuszczam, że nie include'ujesz tam pliku "football.h",
    > w związku z czym przy parsowaniu zawartości "silowy.h" klasa Football
    > jest nieznana.
    >
    > Spróbuj z powrotem dodać do pliku silowy.h include dołączający plik
    > football.h, tak aby początek pliku silowy.h wyglądał tak:
    >
    > #ifndef SILOWY_H_INCLUDED
    > #define SILOWY_H_INCLUDED
    >
    > #include "football.h"
    >
    > class Silowy : public Football
    > ... i dalej reszta pliku...
    >
    > W ten sposób za każdym razem gdy dołączana jest definicja klasy Silowy
    > jednocześnie dołączana jest definicja klasy Football, oraz jesteś
    > zabezpieczony przed kilkukrotnym zainclude'owaniem definicji tej
    > samej klasy (include guardy).
    >
    > Mam nadzieję że teraz wszystko ruszy :)
    > Pozdrawiam,
    > Tomek Bywalec

    Ehh i kolejny problem:) a podobno programowanie jest takie przyjemne :)

    football.h wyglada tak
    #ifndef FOOTBALL_H_INCLUDED
    #define FOOTBALL_H_INCLUDED
    class Football
    {
    public:
    int ile;

    Football(int d);
    Football();
    void podaj(void);
    void strzel(void);
    void dosrodkuj(void);
    void odb_pilke(void);
    void drybluj(void);
    void bron(void);
    };
    #endif

    silowy.h:
    #ifndef SILOWY_H_INCLUDED
    #define SILOWY_H_INCLUDED
    #include "football.h"
    class Silowy : public Football
    {
    public:
    int ile;
    Silowy(int d);
    Silowy();
    void przepychanie_w_polu(void);
    void umiejetny_faul(void);
    void gra_glowa(void);
    };
    #endif

    zaliczenie.cpp:

    #include "football.h"
    #include "silowy.h"

    int main()

    {
    Football *f1;
    f1=new Football(1);
    f1->podaj();
    f1->dosrodkuj();
    delete f1;

    Silowy *s1;
    s1=new Silowy(1);
    s1->przepychanie_w_polu();
    s1->umiejetny_faul();
    delete s1;

    return 0;
    }

    silowy.cpp tak:

    #include "silowy.h"
    #include <iostream>

    Silowy::Silowy(int d)
    {
    ile=d;
    }

    void Silowy::gra_glowa(void)
    {
    for (int i=0;i<ile;i++)
    std::cout<<"Silowy->gra_glowa()\n";
    }

    void Silowy::przepychanie_w_polu(void)
    {
    for (int i=0;i<ile;i++)
    std::cout<<"Silowy->przepychanie_w_polu()\n";
    }

    void Silowy::umiejetny_faul(void)
    {
    for (int i=0;i<ile;i++)
    std::cout<<"Silowy->umiejetny_faul()\n";
    }

    i w rezultacie po kompilacji:

    g++ -o zaliczenie zaliczenie.o football.o silowy.o
    silowy.o: In function `Silowy::Silowy(int)':
    silowy.cpp:(.text+0x105): undefined reference to `Football::Football()'
    silowy.o: In function `Silowy::Silowy(int)':
    silowy.cpp:(.text+0x121): undefined reference to `Football::Football()'
    collect2: ld returned 1 exit status
    make: *** [zaliczenie] Error 1





Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: