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

ProAmateur

Alter Hase

  • »ProAmateur« ist der Autor dieses Themas

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

1

19.02.2012, 13:41

vector und SFML

Hi

Ich bins mal wieder :rolleyes:
Bin dran mir SFMl am aneignen, wollte jetzt aber noch vector includieren, kann aber diese jetzt nicht benutzen.
Code sagt mehr als tausend Wörter! (Obwohl es nicht viel zu zeigen gibt ^^ )

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
///////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
#include "CHeader.h"
#include <SFML/Graphics.hpp>
#include <vector>

int main()
{
    vector<CMob> vMobs;
    vector<int>  vNumber;


Wenn ich den mauszeiger auf dem ersten vector<...> ruhen lasse steht da:

Zitat

ERROR: Der Bezeichner ""vector"" ist nicht definiert

Beim CMob und dem int in den Klammern steht:

Zitat

ERROR: der Typname ist nicht zulässig.

bei vMobs und vNumber:

Zitat

ERROR: Der bezeichner "vNumber" ist nicht definiert.


Hab irgendwie das Gefühl, dass es was mit den Einstellungen der SFML zutun hat, denn wenn ich sonst ein Projekt erstelle, kann ich vector benutzen!

Danke für Hilfe

ProAmateur
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

19.02.2012, 13:44

*Hust*

C-/C++-Quelltext

1
std::

*Hust*

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

3

19.02.2012, 13:44

vector ist im std namespace

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

4

19.02.2012, 13:44

<vector> ist ein Standard C++ Header und muss std::vector heißen wenn du es nicht anders mit using spezifizierst.
Was du von SFML suchst sind Vector2 und Vector3.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

ProAmateur

Alter Hase

  • »ProAmateur« ist der Autor dieses Themas

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

5

19.02.2012, 13:45

Ok, hat sich erledigt!
Ich trottel hab vergessen std::vector zu schreiben :rolleyes:
Jetzt klappts...

Ich liebe es, wenn ich wieder mal Zeit in so doofe kleine Fehler investieren muss^^
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

ProAmateur

Alter Hase

  • »ProAmateur« ist der Autor dieses Themas

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

6

19.02.2012, 13:45

:P jop alle gleich schnell :D

Danke!!!
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

ProAmateur

Alter Hase

  • »ProAmateur« ist der Autor dieses Themas

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

7

19.02.2012, 18:51

Ich hätte da noch ne Frage.
Im Vector hab ich jetzt mehrer Instanzen einer Klasse, die die gegner darstellen soll.
Durch den Vector kann ich ja einfach Gegner hinzufügen oder auch durch erase aus der Liste löschen, wenn sie besiegt wurden.
Wenn ich jetzt aber mit dem Iterator des vectors die render() von allen lebenden gegnern aufrufe, sehe ich diese auch über den Bilsdschirm laufen, aber
das Sprite ist kommplett weiß, auch keine transperenz ist mehr zu sehen.
wenn ich aber zum Vergleich eine Instanz auserhalb des vectors erstelle, funktioniert es einwand frei.

Ich poste mal den dazugehörigen code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
// der Vector
std::vector<CMob> vMobs;
std::vector<CMob>::iterator Iter;

// hab dabei jetzt unwichtige Sachen weggelassen
while (App->IsOpened())
{
if((static_cast<int>(WorldClock.GetElapsedTime()*10000))%10000 == 0)
        vMobs.push_back(CMob(true,7,10));

for(Iter=vMobs.begin(); Iter<vMobs.end(); Iter++)
        Iter->Move();
}

Die render sieht ganz gewöhnlich aus:

C-/C++-Quelltext

1
2
3
4
5
void CMesh::Render ()
{
    Sprite->SetPosition (vPosition);
    Window::Get()->Instance->Draw (*Sprite);
};


Was ich vll noch dazu sagen muss, weiß nicht obs wichtig ist, die klasse CMob erbt von der Klasse CMesh und die Window, in der App drinn ist, ist eine Singleton.

Wenn ihr weiter fragen habt, stellt sie.
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »ProAmateur« (19.02.2012, 19:01)


drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

8

19.02.2012, 19:07

Beachte, dass, wenn du eine Instanz so einfügst wird das Objekt kopiert und deine Klasse muss das so vorsehen, dass mehrfaches kopieren kein Problem darstellt, was bei etwas komplexeren Objekten nicht immer ganz so trivial ist.

ProAmateur

Alter Hase

  • »ProAmateur« ist der Autor dieses Themas

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

9

19.02.2012, 19:10

Sorry, aber ich ferstehe nicht s o ganz, was du meinst.
denkst du es wäre besser wenn ich eine jedesmal eine instanz erstelle und diese dann an den vector übergebe?
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

10

19.02.2012, 19:50

Also ich weiss nicht ob es daran liegt, aber es klingt sehr danach, dass du CMob nicht so implementiert hast, dass ein kopieren einer Instanz kein Problem darstellt.

Sagen wir in CMob hat du einen Zeiger auf ein Bild, welches du lädst. Wenn du da jetzt nicht aufpasst und eine Kopie machst wird der Zeiger einfach kopiert, während das Bild vom anderen Objekt zerstört wird. Das neue Objekt hat dann einen Zeiger auf ein ungültiges Bild, was sich dann so äussern kann, dass du nur noch ein weisses Bild siehst.

Werbeanzeige