Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

struktura

Ostatnio zmodyfikowano 2009-05-29 20:46
Autor Wiadomość
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ś...

C/C++
#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 ?
P-7253
pekfos
» 2009-05-29 18:47:57
void Osoby::Wyswietl()
wiesz co to znaczy? że metoda Wyswietl jest
elementem struktury Osoby. wywal te "Osoby::"
P-7255
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:
C/C++
#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();
}
 
P-7256
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:

C/C++
#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();
}
P-7257
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?
P-7258
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.
P-7273
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"?
P-7275
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 ;) )
P-7279
« 1 » 2
  Strona 1 z 2 Następna strona