Avatar
Head
Člen
Avatar
Head:

vedel by mi niekto poradiť ako vytvoriť funkciu ktora ma argument strukturu vytovrenu pomocou new ?

 
Odpovědět 19.11.2015 19:31
Avatar
tomisoka
Redaktor
Avatar
Odpovídá na Head
tomisoka:

Myslíš něco jako tohle?:

struct struktura{
  int data;
};

void funkce(struktura *arg){

}

int main(int argc, char *argv[]){
  struktura *test = new struktura();

  funkce(test);

  delete test;

  return 0;
}
 
Nahoru Odpovědět 19.11.2015 19:41
Avatar
Head
Člen
Avatar
Odpovídá na tomisoka
Head:
typedef struct
{

}POLOZKA;

void fillStruct(ifstream &file, struct POLOZKA *polozka)
{

}

int main()
{
POLOZKA *polozka = new POLOZKA[rows];
}

ono je to vlastne ako pole struktur ... to fillStruct neviem nejako vyriesit ...

 
Nahoru Odpovědět 19.11.2015 19:48
Avatar
tomisoka
Redaktor
Avatar
Odpovídá na Head
tomisoka:

Třeba takto?:

typedef struct
{
  int data;
}POLOZKA;

void fillStruct( POLOZKA *polozka)
{
  int i;
  for(i=0;i<10;++i)printf("%d\n", polozka[i].data);
}

int main()
{
  int i, rows = 10;
  POLOZKA *polozka = new POLOZKA[rows];
  for(i=0;i<rows;++i)polozka[i].data = i;
  fillStruct(polozka);
  return 0;
}

Jinak v C++ se většinou používá:

struct POLOZKA
{
  int data;
};

Protože snad jediný důvod proč se to píše v C pomocí typedef, je aby se nemuselo vždy psát před název struktury "struct", což v C++ už není potřeba.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 19.11.2015 19:59
Avatar
Head
Člen
Avatar
Odpovídá na tomisoka
Head:

no teraz mi to vyhadzuje ze ta POLOZKA nebola deklarovana...

 
Nahoru Odpovědět 19.11.2015 20:09
Avatar
tomisoka
Redaktor
Avatar
Odpovídá na Head
tomisoka:

Zvláštní, protože ta POLOZKA v tomto kódu rozhodně deklarovaná je. Zkusil jsi to okopírovat přesně jak jsem to poslat? (+ #include <cstdio>, ten kód jsem zkoušel a funguje přesně jak má) Nevypisuje to ještě nějaké jiné chyby? Zkus ještě zápis tím druhým způsobem. (I když dost pochybuji, že by to mohlo něco změnit) Pokud nic nefunguje, co používáš za compiler?

 
Nahoru Odpovědět 19.11.2015 20:52
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.