Gut, danke lässt sich jetzt kompilieren. Das mit dem noncopyable hatte ich mir schon gedacht, aber ich bin nicht drauf gekommen es als Referenz zu übergeben
Allerdings habe ich das nächste Problem
Und zwar:
Unbehandelte Ausnahme bei 0x5e3b65af in SFML App.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x622e6574.
Das "in SFML App.exe", bedeutet das, dass ich in meiner eigenen App lesen will?
Es passiert, wenn ich versuche ein Image zu laden.
Das mache ich wie folgt:
Game.cpp
|
C-/C++-Quelltext
|
1
2
|
m_BlackCube = new Image;
m_BlackCube->Load ("Data/Sprites/BlackCube.bmp");
|
und hier die Klasse, die dann letztendlich das Bild lädt:
Image.hpp
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
class Image
{
public:
Image () {m_Image = new sf::Image;}
void Load (std::string FileName); // Lädt ein Image
sf::Image GetImage () {return *m_Image;} // Zum zurückgeben eines Images, damit es für ein Sprite verwendet werden kann
void SetColorKey (sf::Color Color, int Strength = 0); // Zum setzen der Transparenten Farbe
private:
sf::Image *m_Image; // das Image
};
|
Und Image.cpp
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
|
void Image::Load (std::string FileName)
{
if (!m_Image->LoadFromFile(FileName)) //<<<<- Hier tritt der Fehler auf
{
std::cout << "Fail beim Laden des Bildes: " << FileName << std::endl;
std::cin.get ();
}
}
|
Zuerst hatte ich das Image ganz normal angelegt, also nicht auf dem Heap und ohne den Konstruktor. Das funktioniert aber genauso wenig.
Kann jemand erkennen, was ich falsch mache?
lg chaia
EDIT:
Irgendwie scheint das ganze bei mir überhaupt nicht zu funktionieren.
Ich habe einfach mal folgendes direkt an den Anfang der main() gesetzt, um zu testen, ob das überhaupt geht.
|
C-/C++-Quelltext
|
1
2
|
sf::Image Image;
Image.LoadFromFile("sprite.tga");
|
Es erscheint folgende Meldung:
Durch einen Pufferüberlauf in SFML App.exe wurde der interne Programmzustand beschädigt. Klicken Sie auf "Unterbrechen", um das Programm zu debuggen, oder auf "Weiter", um es zu beenden.
Weitere Informationen finden Sie im Hilfethema "Gewusst wie: Debugging von Pufferüberlaufproblemen".