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
C-/C++-Quelltext |
|
1 |
CBlock* m_pBloock[64]; // Zeiger auf blöcke |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//Init: for(DWORD dwBlock = 0;dwBlock < 64;dwBlock++) { m_pBlock[dwBlock] = &m_pGame->m_aBlock[dwBlock]; //Zuweisen } //..... bool CPlayer::CheckAllCollision() { for(DWORD dwBlock = 0;dwBlock < 64;dwBlock++) { if(tbSphereHitsSphere(m_vPosition ,1,m_pBlock[dwBlock]->m_vPosition/*Hier tritt der Fehler auf*/,1))return true //Kollision? } return false; //keine Kollision? } |
Zitat
CBlock* m_pBloock[64]; // Zeiger auf blöcke
jop. Naja, 64 ist nur so ein Testwert, wird wahrscheinlich noch runtergesetzt.Zitat von »"drakon"«
(ich denke mal, dass du sowieso m_pBlock schreiben wolltest. Ist ja sonst ein anderes Array, als du unten benutzt.)
Zitat von »"drakon"«
Was hat den dwBlock für einen Wert, wenn er crasht? Kling nämlich so, dass du entweder auf einen Bereich, der nicht existiert zugreifst, oder kein gültiger Zeiger dort wartet.
C-/C++-Quelltext |
|
1 |
if(m_pGame->m_pPlayerModel[...]->Render())TB_ERROR(); |
C-/C++-Quelltext |
|
1 |
m_pGame->m_aBlock[dwBlock]; |
C-/C++-Quelltext |
|
1 |
m_pBlock[dwBlock] = new CBlock; |
Zitat von »"MMAnfänger"«
hmmm, das ist ja gerade das mysteriöse
eigentlich wollte ich den Block
mit einer for Schleife und
C-/C++-Quelltext
1 m_pBlock[dwBlock] = new CBlock;
erstellen, aber das hat nicht funktioniert und war (komischerweise) nicht? nötig.
Das Rendern und alles andere hatte geklappt, nur beim Zugriff aus ner anderen Klasse kommt der Fehler.
mfg MMAnfänger
C-/C++-Quelltext |
|
1 |
CBlock m_pBloock[64]; // Zeiger auf blöcke |
C-/C++-Quelltext |
|
1 |
new
|
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 |
class CGame; class CBlock { public: tbVector3 m_vPosition; CGame* m_pGame; int iIndex; // Index im Array //etc... tbResult Init(tbVector3 vPosition, int Index); }; tbResult CBlock::Init(tbVector3 vPosition, int Index) { m_vPosition = vPosition; iIndex = Index; m_pGame->m_pBlock[iIndex] = new CBlock; } |
C-/C++-Quelltext |
|
1 |
m_pGame->m_pBlock = new CBlock [iIndex]; |
Zitat von »"drakon"«
...
Zitat von »"David_pb"«
Zitat von »"drakon"«
...
Wenn sein Array wie ganz zu Beginn deklariert ist (CBlock* m_pBloock[64]; // Zeiger auf blöcke) dann macht er das schon richtig...
Werbeanzeige