[C++] Array erweitern



  • Nabend 😃
    Erstmal ein bisschen Code zum Verständnis:

    int c_sprite::addFrame ( char *bitmapPath )
    {
    	c_bitmap bitmap;
    
    	if ( !bitmap.loadBitmap ( bitmapPath ) )
    	{
    		return false;
    	}
    
    	if ( spriteData.header.spriteWidth < bitmap.bitmapData.infoheader.bitmapWidth )
    		spriteData.header.spriteWidth = bitmap.bitmapData.infoheader.bitmapWidth;
    	if ( spriteData.header.spriteHeight < bitmap.bitmapData.infoheader.bitmapHeight )
    		spriteData.header.spriteHeight = bitmap.bitmapData.infoheader.bitmapHeight;
    
    	long pixels								= bitmap.bitmapData.infoheader.bitmapWidth * bitmap.bitmapData.infoheader.bitmapHeight;
    /*			
    ->	spriteData.frame						+= new struct c_sprite::d_sprite::d_frame[1];
    
    	spriteData.frame[f].frameType			= SINGLEFRAME;
    	spriteData.frame[f].frameOriginX		= 0;
    	spriteData.frame[f].frameOriginY		= 0;
    	spriteData.frame[f].frameWidth			= bitmap.bitmapData.infoheader.bitmapWidth;
    	spriteData.frame[f].frameHeight			= bitmap.bitmapData.infoheader.bitmapHeight;
    	spriteData.frame[f].p_frameData			= new unsigned char[pixels];
    
    	for ( int d = 0; d < pixels; d++ )
    	{
    		spriteData.frame[f].p_frameData[d]		= bitmap.bitmapData.p_pixelmap[d].pixel8Bit;
    	}
    */
    	return true;
    };
    

    So nun meine Frage:
    Wie man die Größe eines Arrays zur Laufzeit eines Programms bestimmt, weiß ich ja.
    Aber wie kann man die Größe Erweitern ?

    Um in diesem Fall ein weiteres Frame zu einem Sprite hinzuzufügen.



  • Benutze dafür std::vector. Steht in jedem vernünftigen C++Buch oder auch hier: http://www.kharchi.de/cppratgeber2.htm
    Hier ist noch eine Reference: http://www.cppreference.com/cppvector/index.html



  • Daran hab ich auch schon gedacht.
    Ich möchte aber trozdem gerne wissen, ob, und wenn ja, wie das mit Arrays funktioniert.
    ( Egal wie umständlich es auch sein mag )



  • Man kann ein Array nicht nachträglich ändern! Du kannst nur ein neues (größeres) anlegen und den Inhalt des alten Arrays in das neue kopieren/verschieben. Und dann das alte Array löschen.



  • Da hätt ich auch gleich drauf kommen können. 🙄

    -> CLOSED <-
    &
    *indeckunggeh*


Anmelden zum Antworten