Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » struct mit array?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
22.07.2006, 15:02 Uhr
~Newb2
Gast


Hallo,

ich versuche folgendes Struct aufzubauen und zu benutzen:

C++:
struct myStruct {
    int row;
    int col;
    int offset[]; //das soll ein array werden
}



hier die benutzung:

C++:
struct myStruct cc;
cc.offset[2] = 9;



ich versteh nicht ganz warums so einen segmentation fault gibt. Wohl weil das array statisch ist und ich zuerst keine grösse festgelegt habe? aber wie kann ich dann eine grösse erst im nachhinein festlegen?

was ich brauche ist eigentlich ganz einfach:
einfach nur ein array im struct welches dynamisch sein soll. Wird wohl besser sein einne vector zu benutzen. Aber auch mit vector gehts net....
muss ich evtl. den INdexOperator überladen ?

Danke euch
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.07.2006, 16:43 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,
also du musst schon zwischen C und C++ unterscheiden: vector und z.b operator-überladung ist C++. in C gibts nur pointer

Das wär C:

C++:
#include <memory.h>

typedef struct myStruct {
    int row;
    int col;
    int *offset;
} myStruct_t;

void irgendnefunktion()
{
  myStruct_t cc;
  cc.offset = malloc(sizeof(int) * 4); // speicher für 4 elemente reservieren
  cc.offset[0] = 1;
  cc.offset[1] = 3;
  cc.offset[2] = 9;
  cc.offset[3] = 7;

  //... was mit cc machen
  // hier ist z.B. cc.offset[3] == 7
  
  free(cc.offset); // speicher freigeben
}



C++:


C++:
#include <vector>

struct myStruct {
  int row;
  int col;
  std::vector<int>offset;
};

void irgendnefunktion()
{
  myStruct cc;
  cc.offset.push_back(1);
  cc.offset.push_back(3);
  cc.offset.push_back(9);
  cc.offset.push_back(7);

  //... was mit cc machen
  // hier ist z.B. cc.offset[3] == 7
}


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: