Nowe posty

Autor Wątek: [C++] struct  (Przeczytany 4839 razy)

Gosik

  • Gość
[C++] struct
« dnia: 2013-02-17, 14:45:24 »
Witajcie!
  Spotkalam sie w pewnym kodzie zrodlowym z nastepujaca postacia struct:

 typedef struct {
  int n;
  double r, z, t;
  } int_t;
co w tym przypadku oznacza typdef oraz na koncu int_t  ?

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
[C++] struct
« Odpowiedź #1 dnia: 2013-02-17, 14:53:59 »
http://www.cplusplus.com/doc/tutorial/other_data_types/

typedef existing_type new_type_name ;
existing_type =
struct {
  int n;
  double r, z, t;
  }
new_type_name =
int_t
Czyli definiowany jest typ "int_t" jako pewna struktura.

Gosik

  • Gość
[C++] struct
« Odpowiedź #2 dnia: 2013-02-17, 15:07:56 »
Bardzo dziekuje za wyjasnienie! :)

Jednakze mam jeszcze jedno pytanie. Jesli chcialabym stworzyc funkcje zalezna od argumentow n,r,z oraz t, to jak ona powinna wygladac?
  czy to bedzie taki zapis:
 
 
  void funkcja(int_t int_t.n, int_t int_t.r, int_t)

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
[C++] struct
« Odpowiedź #3 dnia: 2013-02-17, 19:05:54 »
Raczej tak:
void funckja(int n, double r, z, t)
{
  [...]
Ale możesz przecież przekazać całą strukturę:
void funkcja(int_t struktura)
{
  printf("%d\\n", struktura.n);
  [...]
Chyba, że chodzi Ci o coś innego.

Gosik

  • Gość
[C++] struct
« Odpowiedź #4 dnia: 2013-02-18, 17:13:46 »
Tak, o to mi chodzilo.
Jednak mam maly problem.

w jednym pliku date..h storzylam strukture:
typedef struct {
  int n;
  double r, z1, z2, z;
  } int_par_t;
i storzylam drugi plik integ.cpp, w ktorym mam nastepujaca funkcje:
void integrl(int_par_t int_par)
  {  
    ..........
  }
error: variable or field ‘integrl’ declared void
 error: ‘int_par_t’ was not declared in this scope

Dlaczego wyskakuja takie bledy?

Offline vanhelzing

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 314
    • Zobacz profil
[C++] struct
« Odpowiedź #5 dnia: 2013-02-18, 18:45:07 »
Dołączasz plik nagłówkowy "date.h" w "integ.cpp"?

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3068
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
[C++] struct
« Odpowiedź #6 dnia: 2013-02-19, 08:00:46 »
Gosik: Wklejaj na forum "wyciachane" ale kompletne przykłady kodu, który nie działa. Nie oczekuj od nas, że wymyślimy co znajduje się poza 8 linijkami wklejonego przykładu...
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

xavery

  • Gość
[C++] struct
« Odpowiedź #7 dnia: 2013-02-22, 12:13:39 »
Cytat: Gosik
error: variable or field ‘integrl’ declared void
 error: ‘int_par_t’ was not declared in this scope

Dlaczego wyskakuja takie bledy?
Błąd powstaje dlatego, że odwołujesz się do zmiennej w jednym pliku a jej deklaracja jes w innym pliku co powoduje, że odwołanie następuje poza jej zakresem widoczności (scope). Zadeklaruj (nie mylić z definicją) ponownie tę samą zmienną w pliku cpp ze specyfikatorem 'extern'.