Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Administrator
Nicht unbedingt. Padding und Alignment kann einem einen Strich durch diese Rechnung machen.
Archi, ist mit Liste nicht in den allermeisten Fällen eine verkettete Liste gemeint? Durch diese Iteriert man doch ganz anders. Du meintest wohl ein Array(list) oder Vector?
Die nächste Adresse ist nur n bytes entfernt, wobei n = sizeof(TYPE).
Wenn ich also einen Pointer hochzähle, dann weiß der Compiler anhand des Typs des Pointers (z.B. int bei int*) dass er sizeof(TYPE) Bytes addieren muss, um zur nächsten Speicheradresse zu kommen. Bei int wären es z.B. 4 bytes. So kann bspw. über eine Liste iteriert werden.
Nicht unbedingt. Padding und Alignment kann einem einen Strich durch diese Rechnung machen.
Community-Fossil
@Archi: Da bei der Programmierung ist nichts wichtiger ist als Präzision gibt es keine Erbsenzähler unter den Programmierern. Zumindest solang es um genau darum geht. Im Studium hätte man dir sicher auch einen Punkt abgezogen wenn du diesen Fehler gemacht hättest oder?
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Habe ich auch nicht behauptet. Speziell bei Structs und Klassen ist das Problem üblich.Nicht unbedingt. Padding und Alignment kann einem einen Strich durch diese Rechnung machen.
Aber nicht bei Arrays.
Erm, ja, ich seh's auch wenn es nur einer schreibt. Ich habe aber nie über Arrays geredet und Du auch nicht nur über diese. Es ist dann halt wichtig das im Kopf zu haben. "Über eine Liste" ist genau genommen sogar falsch. Es geht bei Vektoren, bei Listen aber nicht.Wie David schon sagt, AFAIK nicht bei Arrays.
TigerClaw25
unregistriert
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
#ifndef __TextureManager__ #define __TextureManager__ #include <iostream> #include <string> #include <map> #include "SDL.h" #include <SDL_image.h> class TextureManager { public: bool load(std::string fileName,std::string id, SDL_Renderer* pRenderer); // draw void draw(std::string id, int x, int y, int width, int height, SDL_Renderer* pRenderer, SDL_RendererFlip flip = SDL_FLIP_NONE); // drawframe void drawFrame(std::string id, int x, int y, int width, int height, int currentRow, int currentFrame, SDL_Renderer* pRenderer, SDL_RendererFlip flip = SDL_FLIP_NONE); std::map<std::string, SDL_Texture*> m_textureMap; // Singleton static TextureManager* Instance() { if(s_pInstance == 0) { s_pInstance = new TextureManager(); return s_pInstance; } return s_pInstance; } private: TextureManager(){} static TextureManager* s_pInstance; }; typedef TextureManager TheTextureManager; #endif /* defined(__TextureManager__) */ |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
............... else { std::cout << "SDL init fail\n"; return false; // SDL init fail } std::cout << "init success\n"; m_bRunning = true; // everything inited successfully, // Lade über TextureManager (Singleton) mit ID als MAP TheTextureManager::Instance()->load("animate-alpha.png", "animate", m_pRenderer); return true; } ............... |
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »TigerClaw25« (21.11.2013, 18:50)
Erm, ja, ich seh's auch wenn es nur einer schreibt. Ich habe aber nie über Arrays geredet und Du auch nicht nur über diese. Es ist dann halt wichtig das im Kopf zu haben. "Über eine Liste" ist genau genommen sogar falsch. Es geht bei Vektoren, bei Listen aber nicht.Wie David schon sagt, AFAIK nicht bei Arrays.
Werbeanzeige