Seite 1 von 2
Array beliebiger Größe
Verfasst: So Dez 02, 2012 12:21 pm
von naums
Ahoi,
Ich habe eine Klasse, die einen Wert halten soll. Der Wert soll im Prinzip eine Zahl darstellen können. Allerdings brauche ich mehr als nur 0 und 1, sondern auch ein Don't Care. Daher habe ich ein enum mit 0 und 1 und DC gefüttert und deklariere mir eine Array dieses Enums in der Klasse. Das Problem ist, dass ich die Breite des Arrays während der Laufzeit festlegen muss.
Die Klasse schaut bislang etwa so aus:
Code: Alles auswählen
class bool_logic
{
private:
enum bl
{
0,
1,
DC
};
int size;
enum bl[size] value;
};
Wie mache ich C++ verständlich, dass value die breite size haben soll?
MfG
Re: Array beliebiger Größe
Verfasst: So Dez 02, 2012 12:29 pm
von Xin
naums hat geschrieben:
int size;
enum bl[size] value;
[/code]
Wie mache ich C++ verständlich, dass value die breite size haben soll?
Erstens musst Du im Konstruktor new verwenden, also ein enum bl * value und zweitens ist enum bl[size] value falsch.
Wenn Du sowas auf dem Stack anlegen willst, dann wäre es
Re: Array beliebiger Größe
Verfasst: So Dez 02, 2012 1:30 pm
von darksider3
Ein Array mit Beliebiger größe(und auch veränderbare größe) sind doch mit vector<Datentyp> VarName(ArrayGroeße); Möglich, oder nicht?
So kann man vectoren Array's eine neue Größe zuweisen:
Wenn ich den Beitrag falsch verstanden habe... sorry

Re: Array beliebiger Größe
Verfasst: So Dez 02, 2012 2:29 pm
von Xin
darksider3 hat geschrieben:Ein Array mit Beliebiger größe(und auch veränderbare größe) sind doch mit vector<Datentyp> VarName(ArrayGroeße); Möglich, oder nicht?
Doch, das wäre auch eine Möglichkeit, in dem er den Vektor in der Initialisierungsliste mit size vorinitialisiert.
Re: Array beliebiger Größe
Verfasst: Mo Dez 03, 2012 7:41 pm
von sebix
Dann wie ein Array verwenden
Re: Array beliebiger Größe
Verfasst: Mi Dez 05, 2012 10:49 am
von oenone
sebix hat geschrieben:
Dann wie ein Array verwenden
böse, wenn size noch nicht initialisiert ist und damit einen undefinierten Wert hat...
Re: Array beliebiger Größe
Verfasst: Mi Dez 05, 2012 11:44 am
von Xin
Code: Alles auswählen
class bool_logic
{
private:
enum bl
{
FALSE,
TRUE,
DC
};
int size;
std::vector< enum bl > value;
public:
bool_logic( unsigned int arraySize )
: size( arraySize )
, value( arraySize )
{}
enum bl & operator [] ( unsigned int idx )
{
return value[ idx ];
}
};
oder
Code: Alles auswählen
class bool_logic
{
private:
enum bl
{
FALSE,
TRUE,
DC
};
int size;
enum bl * value;
public:
bool_logic( unsigned int arraySize )
: size( arraySize )
, value( new enum bl[ arraySize ] ) // müsste eigentlich gehen... habe enum und new nie zusammen verwendet^^
{}
~bool_logic()
{
delete [] value;
}
enum bl & operator [] ( unsigned int idx )
{
return value[ idx ];
}
};
Re: Array beliebiger Größe
Verfasst: Mi Dez 05, 2012 4:58 pm
von Kerli
Wozu denn eigentlich überall das 'enum' (zb. 'enum bl* value')? Soweit ich weiß ist das nur mit irgend einem älteren C Standard nötig. In aktuellem C bzw. C++ ist das eigentlich überflüssig bzw. mir ist noch kein Grund dafür untergekommen.
Re: Array beliebiger Größe
Verfasst: Mi Dez 05, 2012 5:09 pm
von Xin
Hmm.... bin wohl auch schon älterer Standard. ^^
Ich benutze Enums schon lange nicht mehr.
Re: Array beliebiger Größe
Verfasst: Mi Dez 05, 2012 8:15 pm
von sebix
oenone hat geschrieben:sebix hat geschrieben:
Dann wie ein Array verwenden
böse, wenn size noch nicht initialisiert ist und damit einen undefinierten Wert hat...
Sorry, aber ich versteh nicht ganz was daran böse sein soll. Wenn du tatsächlich meinst, ich hätte im Codebeispiel size explizit definieren sollen, hättest du es aber auch schon vorher richtig posten können.