Array beliebiger Größe

Schnelle objektorientierte, kompilierende Programmiersprache.
Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Array beliebiger Größe

Beitrag von naums » So Dez 02, 2012 12:21 pm

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
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Array beliebiger Größe

Beitrag von Xin » So Dez 02, 2012 12:29 pm

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

Code: Alles auswählen

enum bl value[size]
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
darksider3
Beiträge: 347
Registriert: Fr Sep 14, 2012 6:26 pm
Wohnort: /dev/sda1
Kontaktdaten:

Re: Array beliebiger Größe

Beitrag von darksider3 » So Dez 02, 2012 1:30 pm

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:

Code: Alles auswählen

VarName.resize(NeueArrayGroeße);
Wenn ich den Beitrag falsch verstanden habe... sorry :-D
effizienz ist, wenn ich ein loch bohre und hinterher mein nachbar auch ein bild aufhängen kann... ^^
Meine Homepage und der Microblog von mir :)
Live Life dont let Life Live You!
Am meisten Aktiv in Webentwicklung und PHP im Wiki

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Array beliebiger Größe

Beitrag von Xin » So Dez 02, 2012 2:29 pm

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

sebix
Beiträge: 82
Registriert: Mo Nov 19, 2012 8:27 pm

Re: Array beliebiger Größe

Beitrag von sebix » Mo Dez 03, 2012 7:41 pm

Code: Alles auswählen

#include<vector>
std::vector<enum> bl (size);
Dann wie ein Array verwenden

Benutzeravatar
oenone
Beiträge: 223
Registriert: Do Sep 01, 2011 2:42 pm
Wohnort: Bremen
Kontaktdaten:

Re: Array beliebiger Größe

Beitrag von oenone » Mi Dez 05, 2012 10:49 am

sebix hat geschrieben:

Code: Alles auswählen

#include<vector>
std::vector<enum> bl (size);
Dann wie ein Array verwenden
böse, wenn size noch nicht initialisiert ist und damit einen undefinierten Wert hat...

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Array beliebiger Größe

Beitrag von Xin » Mi Dez 05, 2012 11:44 am

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 ];
         }
};
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Array beliebiger Größe

Beitrag von Kerli » Mi Dez 05, 2012 4:58 pm

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.
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Array beliebiger Größe

Beitrag von Xin » Mi Dez 05, 2012 5:09 pm

Hmm.... bin wohl auch schon älterer Standard. ^^

Ich benutze Enums schon lange nicht mehr.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

sebix
Beiträge: 82
Registriert: Mo Nov 19, 2012 8:27 pm

Re: Array beliebiger Größe

Beitrag von sebix » Mi Dez 05, 2012 8:15 pm

oenone hat geschrieben:
sebix hat geschrieben:

Code: Alles auswählen

#include<vector>
std::vector<enum> bl (size);
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.

Antworten