Hilfe, habe BLACKOUT bei Arrays...



  • einmal statisch (enum hack wegen studio)

    einmal dynamisch

    class Array1{
    
    	enum {MAX=10};
    	int ar[MAX];
    public:	
    	Array1(){
    
    		for (int i=0; i<MAX; i++){
    			ar[i]=i;
    		}
    	}
    };
    
    class Array2{
    
    	int *pAr;
    	const int MAX;
    public:	
    	Array2(int dyn) : MAX (dyn){
    		pAr=new int (MAX);
    		for (int i=0; i<MAX; i++){
    			pAr[i]=i;
    
    		}
    	}
    
    	//deleten über destruktor nicht vergessen
    };
    


  • Aloha elise,

    danke für die Antwort.
    Ne hübsche Lösung, sicherlich. 👍
    Allerdings will ich das Rad nicht neu erfinden, sondern auf simple C++ - Grammatik zurückgreifen.

    Initialisierungsliste ist das Stichwort. Ich bin doch nicht der einzigste Mensch, der davon schon gehört hat, oder ? 😉

    Grüße

    BOA



  • hallo??

    da ist deine initialisierungsliste 😉

    das ist das, was nach dem einfachen doppelpunkt hinter dem konstruktor steht.

    was meinst du denn sonst damit?

    Konstruktor (parameter) : initialisierungsliste { implementierung }

    ----
    ps: du wirst den konstruktor der klasse wohl bemuehen müssen, dein array zu initialisieren.
    oder mach es statisch.

    ----
    ppps: und wennste mir nich glaubst, hier noch nen gescheiter link von nem klugen
    http://tutorial.schornboeck.net/initliste.htm
    so long



  • Aloha Elise,

    Du hast Recht, ich meine keine Ini-Liste. 🕶

    Wie zur Hölle heißt denn dieses Konstrukt hier ? 😕

    int feld[20] = {0,1,2,3,4....,19};
    

    Grüße

    BOA



  • Feldinitialisierung oder so... 'Nen besonderen Namen habe ich dafür noch nie gehört.



  • Das Ding geht halt nur, wenn du deine Variable Funktionslokal machst, nicht wenn du sie als Member einer Klasse machst.



  • @deus

    na das ist die Aussage, die ich eigentlich nicht hören wollte. 😞
    Mir war so, als ob das auch mit Membern ginge.

    Ich muß 160 int´s setzen, und wollte nicht ne ewig lange Liste schreiben

    feld[0] = 1;
    feld[1] = 3;
    feld[2] = 5499;
    ...
    

    sondern lieber

    feld[160] = {0,1,2,3...159}
    

    Aber wenn es net jeht, dann jeht es nicht...

    Grüße und Danke an alle

    BOA



  • Ich würde mit einer for-Schleife Werte aus einem statischen Array einkopieren. So ungefähr macht der Compiler das intern bei int foo[] = { ... } auch bloß, also tut das nicht weh.



  • Aloha Bashar,

    thx, finde ich ne gute Alternative...

    Teste ich gleich mal....

    Grüße

    BOA



  • Hab ich da was falsch verstanden oder könnt ihr kein cplusplus ?

    //Header-Datei
    class CTest
    {
    public:
    	CTest(void);
    	~CTest(void);
    
    public:
    	static const unsigned char Array1[4];
    	static const unsigned char Array2[7];
    };
    
    //Cpp-Datei
    const unsigned char CTest::Array1[4] = {0,1,2,3};
    const unsigned char CTest::Array2[7] = {0,1,2,3,4,5,6};
    
    CTest::CTest(void)
    {
    }
    
    CTest::~CTest(void)
    {
    }
    

    😋



  • er hat nicht gesagt, daß das feld static und const sein soll... 😉



  • ja das stimmt, aber er hat auch nicht gesagt, das das array veränderbar sein soll :D. ich dachte mir nur, da es bis jetzt noch niemand vorgeschlagen hat, tue ich es halt (vielleicht hätte ich den zweiten halbsatz weglassen sollen, sorry).



  • War vielleicht etwas undeutlich, aber ein statisches Array in deiner Art ist schon Teil meiner Lösung 🙂



  • @bashar

    deine lösung merke ich mir mal für spätere zeiten...

    dann muss ich nicht immer so rumackern.


Anmelden zum Antworten