Allokieren und gleichzeitige Übergabe im Konstruktor einer Klasse



  • Servus Folks,

    ich bin leider noch nicht in die Uniefen des C++ versunken, daß ich nun wüßte wie es geht... Folgendes Beispiel:

    class BigFoo
    	{
    		public:
    			BigFoo();
    			~BigFoo();
    
    			class LittleFoo *GetMyFoo(int iQuantity);
    	};
    
    class LittleFoo *BigFoo::GetMyFoo(int iQuantity);
    	{
    		// Hier würde ich nun gerne
    		// von LittleFoo ein Array erstellen
    		// welches gleichzeitig durch
    		// seinen Konstruktor die Quantity
    		// mitgeteilt bekommt.
    		// 
    		// irgendwie sowas ->> LittleFoo MyFoo(_quantity=10_) = new LittleFoo[100];
    
    	}
    
    class LittleFoo
    	{
    		public:
    			LittleFoo(int iQuantity);
    			~LittleFoo();
    
    			double *dArray;
    	};
    
    LittleFoo::LittleFoo(int iQuantity)
    	{
    		dArray=(double *)calloc(iQuantity,sizeof(double));
    	}
    
    LittleFoo:~LittleFoo()
    	{
    		free(dArray);
    	}
    

    Geht sowas ?

    Danke und Gruß Winn



  • placement new ginge, das würde dann in etwa so aussehen(keinerlei garantie für richtigkeit/sinn des codes,bin müde und will mal endlich ne gute verwendung für placement new finden^^)

    class LittleFoo *BigFoo::GetMyFoo(int iQuantity)
    {
        LittleFoo* newFoo=(LittleFoo*)new char[sizeof(LittleFoo)*100];//platz für 100 LittleFoo reservieren
        for(LittleFoo* pos=newFoo;pos<pos+100;++pos){//jede "Zelle" durchgehen
            new(pos) LittleFoo(IQuantity);//LittleFoo in der zelle erstellen
        }
    }
    

Anmelden zum Antworten