Du bist nicht angemeldet.

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

1

04.07.2011, 17:04

Vector ist leer...

Hallo,

ich habe mal wieder ein Problem, undzwar möchte ich einen Vektor einer Klasse übernehmen, für
eine Collisions Abfrage, erstmal der Code:

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
CObject.cpp:

/////////////////////////////
//#Values that can returned//
/////////////////////////////

//#       1 = Collision on Right Side
//##     2 = Collision on Left Side
//###   3 = Collision on Bottom Side
//#### 4 = Collision on Top Side

if(Material == "Wood" && ID == 1)
{
    //Get List from Level Class and save it in this List
    Collision_Vector = Level.GetVectorByID(1);
}

//...

for(vector<CObject>::iterator  i = Collision_Vector.begin(); i != Collision_Vector.end(); i++)
{
    cout << "Banane!" << endl;
    if(IsCollisionOnRightSide(i->GetSprite()) == true)
    {
        return 1;
    }
    else if(IsCollisionOnLeftSide(i->GetSprite()) == true)
    {
        return 2;
    }
    else if(IsCollisionOnBottomSide(i->GetSprite()) == true)
    {
        return 3;
    }
    else if(IsCollisionOnTopSide(i->GetSprite()) == true)
    {
        return 4;
    }
    else
    {
        //#If we dont have a Collision with Anything return ZERO
        return 0;
    }
}


Banane war nur eine test ausgabe um herrauszufinden ob die Funktion überhaupt in
den Block rein kommt, was leider nicht der Fall ist da der Vector laut size() leer ist...

Die Funktion GetVectorByID

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CLevel.hpp:

//Get a Vector by ID and return it
vector<CObject> &GetVectorByID(int ID);

//...

CLevel.cpp:
vector<CObject> &CLevel::GetVectorByID(int ID)
{
    if(ID == 1)
    {
        return Vector_WoodBlock;
    }

        //...
}


Jetzt frag ich mich schon eine Weile warum der Vektor leer ist... denn gefüllt habe ich ihn ja hier:

C-/C++-Quelltext

1
2
3
4
CLevel.cpp:

//Push the object back
Vector_WoodBlock.push_back(ObjectList.GetObjectByID(1));


Vielen dank schonmal im Voraus ^^

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

04.07.2011, 20:11

Mit so auseinandergestückeltem und unzusammenhängendem Code kann ich (und da bin ich wahrscheinlich nicht der einzige) nichts anfangen.

MCP

Alter Hase

Beiträge: 513

Wohnort: Paderborn

Beruf: Software-Entwickler

  • Private Nachricht senden

3

04.07.2011, 20:13

Das dachte ich mir eben auch... ^^
Vielleicht ist Vector_WoodBlock ja leer... ^^

4

05.07.2011, 09:36

Oh..., jetzt wo ich es mir nochmal anschau, ich merks mir fürs nächstemal ^^
Hab das Problem inzwischen gelöst, danke trotzdem! :)

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

5

05.07.2011, 17:21

Normalerweise würde ich jetzt sagen, dass du die Lösung noch hinschreibst für einen allfälligen Suchenden, aber irgendwie scheint mir das hier unnötig. ^^
(Sorry, nicht böse gemeint aber ich habe schon lange nicht mehr eine solch verwirrende, ernsthafte Frage gesehen. ;))

Werbeanzeige