Du bist nicht angemeldet.

Werbeanzeige

xxendlessxx

Treue Seele

  • »xxendlessxx« ist der Autor dieses Themas

Beiträge: 228

Wohnort: Bad Schussenried

Beruf: Full Stack Developer

  • Private Nachricht senden

1

04.11.2009, 16:31

MapStruktur in einem Vector

Moin Leute,
also folgende Situation.

Ich hab eine Struktur:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
struct structMap
{
    std::string Path;
    std::string MapName;
    std::string BottomImagePath;
    int TileW;
    int TileH;
};

Dann hab ich einen Vector vom Typ dieser Struktur

C-/C++-Quelltext

1
std::vector<structMap>MapList;

Und dann hab ich noch eine Methode mit der ich den Vector befülle, zumindest will ich das machen nur schmeist der mit immer ne Exception aus. Ich versuche folgendermaßen neue elemente dem Vector hinzuzufügen.

C-/C++-Quelltext

1
2
3
structMap Temp;
//Temp befüllen mit MapNamen usw.

MapList.push_back(Temp); //Hier die Exception


hoffe mir kann jemand helfen, gruß michi

dot

Supermoderator

Beiträge: 9 850

Wohnort: Graz

  • Private Nachricht senden

2

04.11.2009, 16:34

Was für ne exception?
Zeig mal etwas mehr code bitte.

xxendlessxx

Treue Seele

  • »xxendlessxx« ist der Autor dieses Themas

Beiträge: 228

Wohnort: Bad Schussenried

Beruf: Full Stack Developer

  • Private Nachricht senden

3

04.11.2009, 16:38

An die Exception komm ich nicht ran. Visual Studio haut mir immer nur ein Fenster an den Kopf wo drin steht "Zugriffsverletzung beim Lesen an Adresse ......." Hier die Methode.

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
void cMap::LoadMapList()
{
    std::ifstream File;
    File.open("maps\\maplist.txt",std::ios::in);
    std::string Buffer;
    std::string BufferSubString;
    int TokenPos;
    int SubStringLength;

    while(!File.eof())
    {
        File >> Buffer;
        TokenPos = Buffer.find("=")+1;
        SubStringLength = Buffer.size()-TokenPos;
        BufferSubString = Buffer.substr(TokenPos,SubStringLength);
        structMap Temp;
        try
        {
            MapList.push_back(Temp);
        }
        catch(std::exception &e)
        {//Hier kommt der Debugger nicht mal hin

            std::ofstream Output;
            Output.open("Fehler.txt",std::ios::out|std::ios::app);
            Output << e.what();
        }
        //MapList.back().Path = BufferSubString;

    }
    File.close();
}

dot

Supermoderator

Beiträge: 9 850

Wohnort: Graz

  • Private Nachricht senden

4

04.11.2009, 16:43

Naja, das is ja auch keine C++ Exception die du da bekommst...
Schonmal gecheckt ob dein TokenPos eigentlich nen richtigen Wert hat?

xxendlessxx

Treue Seele

  • »xxendlessxx« ist der Autor dieses Themas

Beiträge: 228

Wohnort: Bad Schussenried

Beruf: Full Stack Developer

  • Private Nachricht senden

5

04.11.2009, 16:45

also als der MapList Vector noch vom typ std::string war und ich nur die Pfadangaben gespeichert hab, hat alles prima geklappt. aber nun wo ich versuch eine struktur darin zu speichern kommt der fehler.

xxendlessxx

Treue Seele

  • »xxendlessxx« ist der Autor dieses Themas

Beiträge: 228

Wohnort: Bad Schussenried

Beruf: Full Stack Developer

  • Private Nachricht senden

6

04.11.2009, 16:56

So hab jetzt mal geschaut und versucht einfach die Struktur mit defaultwerten zu füllen. da kommt der fehler auch schon.

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
void cMap::LoadMapList()
{
    std::ifstream File;
    File.open("maps\\maplist.txt",std::ios::in);
    std::string Buffer;
    std::string BufferSubString;
    int TokenPos;
    int SubStringLength;

    while(!File.eof())
    {
        File >> Buffer;
        TokenPos = Buffer.find("=")+1;
        SubStringLength = Buffer.size()-TokenPos;
        BufferSubString = Buffer.substr(TokenPos,SubStringLength);
        Temp.BottomImagePath = "";
        Temp.MapName = "";
        Temp.Path = BufferSubString;
        Temp.TileH = 0;
        Temp.TileW = 0;
        try
        {
            MapList.push_back(Temp);
        }
        catch(std::exception &e)
        {
            std::ofstream Output;
            Output.open("Test.txt",std::ios::out|std::ios::app);
            Output << e.what();
        }
        //MapList.back().Path = BufferSubString;

    }
    File.close();
}


Und in meinem Watch steht folgendes über Temp


(Link)

dot

Supermoderator

Beiträge: 9 850

Wohnort: Graz

  • Private Nachricht senden

7

04.11.2009, 17:00

Was ist Temp genau, wie ist das deklariert?

xxendlessxx

Treue Seele

  • »xxendlessxx« ist der Autor dieses Themas

Beiträge: 228

Wohnort: Bad Schussenried

Beruf: Full Stack Developer

  • Private Nachricht senden

8

04.11.2009, 17:01

Temp ist vom Typ structMap

C-/C++-Quelltext

1
2
3
4
5
6
7
8
struct structMap
{
    std::string Path;
    std::string MapName;
    std::string BottomImagePath;
    int TileW;
    int TileH;
};


Und hier wird Temp das erste mal bekannt

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
#include <string>
#include <vector>
#include <fstream>

//SFML

////////////////////////////////

#include "SFML/Graphics.hpp"

#ifndef __MAP__
#define __MAP__

struct structMap
{
    std::string Path;
    std::string MapName;
    std::string BottomImagePath;
    int TileW;
    int TileH;
};

class cMap
{
public:
    structMap Temp;

    cMap();
    void LoadMapList();
    void LoadMap(int CurrentMap);
    std::vector<structMap> *GetMapList()
    {
        return &MapList;
    }

private:
    std::vector<structMap>MapList;
};

#endif

dot

Supermoderator

Beiträge: 9 850

Wohnort: Graz

  • Private Nachricht senden

9

04.11.2009, 17:02

ja aber interessant wäre wo sich Temp genau befindet...

xxendlessxx

Treue Seele

  • »xxendlessxx« ist der Autor dieses Themas

Beiträge: 228

Wohnort: Bad Schussenried

Beruf: Full Stack Developer

  • Private Nachricht senden

10

04.11.2009, 17:03

habs grad editiert :D

Werbeanzeige