struktura
Ostatnio zmodyfikowano 2009-05-29 20:46
wiktor12348 Temat założony przez niniejszego użytkownika |
struktura » 2009-05-29 18:17:52 Witam zająłem się struktura i mam takie coś... #include <iostream> #include <string> #include <conio.h> using namespace std; struct Osoby { string imie; string nazwisko; string telefon; }; void dodaj() { struct Osoby dodaj; cout << "Podaj Imie" << endl; cin >> dodaj.imie; cout << "Podaj Nazwisko" << endl; cin >> dodaj.nazwisko; cout << "Podaj Telefon" << endl; cin >> dodaj.telefon; } void Osoby::Wyswietl() { cout << imie << "|" << nazwisko << "|" << wiek << "|" << endl; } int main() { dodaj(); dodaj.Wyswietl(); getch(); }
wywala mi błąd w kompilatorze prze funkcji wyświetl... dokładnie klamre? O co chodzi ? |
|
pekfos |
» 2009-05-29 18:47:57 void Osoby::Wyswietl() wiesz co to znaczy? że metoda Wyswietl jest elementem struktury Osoby. wywal te "Osoby::" |
|
steckel |
» 2009-05-29 18:48:07 Nie można nazywać tak samo funkcji i zmiennej. Były też inne błędy kosmetyczne, które z łatwością byś wyłapał :) Gotowy kod: #include <iostream> #include <string> #include <conio.h> using namespace std; struct Osoby { string imie; string nazwisko; string telefon; }; Osoby dodaj; void funkcja_dodaj() { cout << "Podaj Imie" << endl; cin >> dodaj.imie; cout << "Podaj Nazwisko" << endl; cin >> dodaj.nazwisko; cout << "Podaj Telefon" << endl; cin >> dodaj.telefon; } void Wyswietl() { cout << dodaj.imie << "|" << dodaj.nazwisko << "|" << dodaj.telefon << "|" << endl; } int main() { funkcja_dodaj(); Wyswietl(); getch(); }
|
|
ziemianp |
» 2009-05-29 18:49:27 Wiesz w ogóle co robisz? Wygląda to tak jakbyś skopiował trochę z jakiegoś programu i powklejał na oślep :P Wywala Ci błąd, bo ta strukura nie ma takiej metody zadeklarowanej. A po za tym co to jest za typ danych dodaj? Tutaj zamieszczam to co zmieniłem, żeby to w miarę trzymało się całości: #include <iostream> #include <string>
using namespace std; struct Osoby { string imie; string nazwisko; string telefon; void Wyswietl(); void Dodaj(); }; void Osoby::Dodaj() { cout << "Podaj Imie" << endl; cin >> imie; cout << "Podaj Nazwisko" << endl; cin >> nazwisko; cout << "Podaj Telefon" << endl; cin >> telefon; } void Osoby::Wyswietl() { cout << imie << "|" << nazwisko << "|" << telefon << "|" << endl; } int main() { Osoby a; a.Dodaj(); a.Wyswietl(); getchar(); }
|
|
pekfos |
» 2009-05-29 18:50:16 Język C++ umożliwia tworzenie funkcji wewnątrz struktury. Nie będziemy jednak tego teraz omawiali, ponieważ temat ten zostanie omówiony dla klas. co ty mówisz, steckel? |
|
steckel |
» 2009-05-29 20:26:36 W takim razie mój błąd.. Myślałem, że jest to po prostu taka rozbudowana zmienna bez dodatkowych opcji. |
|
wiktor12348 Temat założony przez niniejszego użytkownika |
» 2009-05-29 20:46:14 Pisałem to z kursem... Jestem noobem w tych klockach... wiec sorry ze te idiotyczne kodowanie...
dzięki za pomoc. kod steckel działa, a w kodzie ziemianp wywala błędy.
tylko jedno pytanie ewentualnie.. czemu muszę dać "Osoby dodaj;" i to w dodatku w tym miejscu(poza funkcjami) jeśli wykonuje coś w "środku"? |
|
ziemianp |
» 2009-05-29 22:43:41 W tych funkcjach korzystasz ze struktury Osoby o nazwie dodaj, która jest zadeklarowana właśnie w tej linijce - Osoby dodaj;. Usuń te deklaracje i zobacz co będzie się działo. A czemu w środku? Możesz zadeklarować ten obiekt wewnątrz funkcji (przed odwołaniem do niego) i też będzie działać, ale wtedy przestanie działać wypisywanie. Te funkcje są globalne i w taki sposób jak to robisz, mogą się odwoływać do globalnych obiektów. Jakbyś umieścił Osoby dodaj wewnątrz którejś funkcji, to żadna inna funkcja nie będzie widzieć tego obiektu.
Ogólnie to nazwa tej struktury jest trochę myląca - przechowasz wewnątrz jej co najwyżej jedną osobę.
Co nie działa w tym moim kodzie? (który działa ;) ) |
|
« 1 » 2 |