Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[C++] obsługa i dziedziczenie klas

szymon189 11 Sty 2012 21:11 1380 3
  • #1 11 Sty 2012 21:11
    szymon189
    Poziom 24  

    Chciałbym na początek w klasach napisać imię i nazwisko zawodnika. Mam taki kod:
    plik main.cpp

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    zawodnik.cpp
    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    zawodnik.h
    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Dlaczego nie pojawia mi się informacja z możliwością wpisania imienia zawodnika?

    0 3
  • #2 11 Sty 2012 21:38
    Dariusz Bismor
    Poziom 17  

    Popełniłeś tak dużo błędów, że nie wiem, od czego zacząć.
    1. Twój problem nie ma nic wspólnego z dziedziczeniem klas
    2. Zrezygnuj jak najprędzej z DevC++, to przestarzałe i nie rozwijane środowisko
    3. Twoja klasa "Zawodnik" nie ma zadeklarowanych żadnych funkcji składowych, jest to zwykła struktura języka C.
    4. Jeżeli chcesz zadeklarować funkcję Zawodnik::imie(), którą masz zdefiniowaną w pliku zawodnik.cpp, powinieneś nadać jej nazwę inną niż składowa "string Zawodnik::imie".
    5. Po co ta funkcja ma przyjmować argument wywołania, skoro jednocześnie pyta użytkownika o imię? Ale jeżeli ma to jakiś sens, to nadaj temu argumentowi inną nazwę, bo będziesz miał kłopoty z przesłanianiem.

    Nie wspominam tu już o innych, "bardziej zaawansowanych" błędach, jak fakt, że składowe-dane nie powinny być publiczne, a funkcja interaktywna. Jednakże gorąco polecam jakąś książkę do C++, na przykład "C++ Potęga języka" Koenig, Moo.

    HTH,
    Dariusz

    0
  • #3 11 Sty 2012 21:55
    mickpr
    Poziom 39  

    Jeden przykład wart więcej niż tysiąc słów:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Oczywiście przychylam się do poprzednika - zmienne klasy nie powinny być (o ile to nie jest absolutnie konieczne) publiczne.

    0
  • #4 11 Sty 2012 22:23
    szymon189
    Poziom 24  

    Zmieniłem program na Visual C++ 2010. Niestety muszę mieć to rozdzielone na 3 pliki jak obecnie:
    main.cpp

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    zawodnik.cpp
    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    zawodnik.h
    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Błędy:
    Cytat:
    1>------ Build started: Project: projekt, Configuration: Debug Win32 ------
    1> zawodnik.cpp
    1>c:\users\szymon\desktop\projekt\projekt\projekt\zawodnik.h(3): error C2146: syntax error : missing ';' before identifier 'imie'
    1>c:\users\szymon\desktop\projekt\projekt\projekt\zawodnik.h(3): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    1>c:\users\szymon\desktop\projekt\projekt\projekt\zawodnik.h(3): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    1>c:\users\szymon\desktop\projekt\projekt\projekt\zawodnik.cpp(11): error C2065: 'imie' : undeclared identifier
    1>c:\users\szymon\desktop\projekt\projekt\projekt\zawodnik.cpp(17): error C2065: 'imie' : undeclared identifier
    1> main.cpp
    1>c:\users\szymon\desktop\projekt\projekt\projekt\zawodnik.h(3): error C2146: syntax error : missing ';' before identifier 'imie'
    1>c:\users\szymon\desktop\projekt\projekt\projekt\zawodnik.h(3): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    1>c:\users\szymon\desktop\projekt\projekt\projekt\zawodnik.h(3): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    1>c:\users\szymon\desktop\projekt\projekt\projekt\main.cpp(11): error C2039: 'imie' : is not a member of 'Zawodnik'
    1> c:\users\szymon\desktop\projekt\projekt\projekt\zawodnik.h(1) : see declaration of 'Zawodnik'
    1> Generating Code...
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


    Dodano po 18 [minuty]:

    Błędem było:
    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    Miało być:
    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    0