Verständniss Frage.
-
Hey zusammen. Ich hätte eine frage nur zum verständniss. Schonmal vorne weg ich Compiliere mit Visual 2012.
Ich habe 2 identische header Dateien.Das ist die Asteroid.hpp und die Player.hpp
Player.hpp
http://pastebin.com/EnVCaaDE#ifndef PLAYER_HPP #define PLAYER_HPP #include <iostream> #include <SFML\Graphics.hpp> class Player { public: Player(std::string texturePath,sf::Vector2f position); ~Player(); void update(float frametime); void render(sf::RenderWindow *rw); void handle(); const sf::Sprite &getSprite() {return *pSprite;); private: sf::Texture *pTexture; sf::Sprite *pSprite; }; #endifAsteroid.hpp
http://pastebin.com/tZBng4aP#ifndef ASTEROID_HPP #define ASTEROID_HPP #include <iostream> #include <SFML\Graphics.hpp> class Asteroid { public: Asteroid(std::string texturePath,sf::Vector2f position, sf::Vector2f scaleFactor, float speed, float rotation); ~Asteroid(); void update(float frametime); void render(sf::RenderWindow *rw); void handle(); const sf::Sprite &getSprite() {return *pSprite;); private: sf::Texture *pTexture; sf::Sprite *pSprite; float mSpeed; float mRotation; }; #endifDie sind vom Aufbau und der schreibweise Identisch.
Meine frage ist jetzt. Wieso wird bei der Ateroid.hpp in Visual 2012 der begriff Asteroid Bleuchlich gemarckt (Sprich als Klasse angesehen. Und bei der Player.hpp nicht.
Ich will auf folgendes hinaus. In der Asteroid.hpp zeigt er mir einen Fehler und zwar das in der spalte mit dem const der Bezeichner pSprite nicht definiert ist. In der Player.hpp zeigt er das nicht. Ich verstehe die Welt nicht mehr.
Ich komm nicht drauf....
-
Versteh ich auch nicht, die sind beide gleich falsch:
const sf::Sprite &getSprite() {return *pSprite;); // ^ // ???
-
Gut damit wäre der fehler geklärt. Aber fürs verständniss nochmal. In dem Astroid.hpp wird die klasse blau markiert. Und im player nicht. Wieso?
danke für den hinweis mit der klammer... Echt blöd naja xD
-
Weil der Compiler nicht weiter liest nach einem Fehler.
Kleines Beispiel:
int main() { int a: //error: expected initializer before ‘:’ token int b: }Ein Compiler liest nur Zeile für Zeile.
-
Ich gehe davon aus, dass deine Konstruktoren (die ohnehin besser const-String-Refs als Parameter haben sollten), stumpf für jedes Sprite-Objekt eine Texture laden?
Falls ja, dann ändere das.
(Wie du als Tutorial-Verfasser und somit fleissiger SFML-Doku Leser ja selber weißt
)
-
Homiophat schrieb:
Gut damit wäre der fehler geklärt. Aber fürs verständniss nochmal. In dem Astroid.hpp wird die klasse blau markiert. Und im player nicht. Wieso?
Keine Ahnung, das ist auch nicht besonders wichtig fürs Verständnis. Das Syntaxhighlighting ist separat vom Compiler, wenn da mal was hakt, kann das alle möglichen Ursachen haben.
-
Jockelx schrieb:
(Wie du als Tutorial-Verfasser und somit fleissiger SFML-Doku Leser ja selber weißt
)Mein Gott, ich hab das jetzt schon so oft gelesen in den letzten Stunden. Kann denn niemand mehr hier im Forum lesen?
Ich baue gerade ein Tutorial Video nach
-
Also um nochmal auf das Tutorial Thema zurück zu kommen. Es gibt auf Youtube ein Tutorial wo es darum geht ein Spiel zu Programmieren. Dabei handelt es sich um eine Art Space Invaders. Und ich schreibe das ganze momentan NACH um eine kleine übersicht zu bekommen wie das alles funktioniert bzw funktioniren kann. Da ich TOTALER c++ anfänger bin.

Deswegen kommen meinerseits auch ziemlich "dumme" fragen... Tut mir leid
Aber danke für die Antworten. Ich denke ihr werdet bald wieder etwas von mir hören

p.s danke Bashar für die Antwort. Dachte es hätte vieleicht einen anderen Hintergrund.
-
Homiophat schrieb:
Also um nochmal auf das Tutorial Thema zurück zu kommen. Es gibt auf Youtube ein Tutorial wo es darum geht ein Spiel zu Programmieren. Dabei handelt es sich um eine Art Space Invaders. Und ich schreibe das ganze momentan NACH um eine kleine übersicht zu bekommen wie das alles funktioniert bzw funktioniren kann. Da ich TOTALER c++ anfänger bin.

Ehrlich gesagt klingt das nach einer schrecklichen Art, C++ zu lernen. C++ ist eine ziemlich komplexe Sprache mit vielen Fallstricken für Anfänger, die zwar auf den ersten Blick funktionieren, aber versteckte Fehler verursachen. Das kommt daher, das die Sprache einem recht viele Freiheiten lässt, wie man vorgeht, aber viele der möglichen Wege führen zu einem wackeligen Kartenhaus von Code, das bei der geringsten Gefahr in sich zusammen bricht, wohingegen aber auch sehr, sehr solide Wege existieren, man muss sie nur kennen.
Bei jedem einzelnen der Stichworte Tutorial, Spieleprogrammierer und Youtubevideo wird dir jeder hier im Forum bestätigen können, dass da fast immer nur die schlechten Arten und Weisen C++ zu programmieren gelehrt werden. Weiterhin darf man am didaktischen Wert eine Videotutorials für solch ein komplexes Thema zweifeln.
Das heißt nicht unbedingt, dass dieses spezielle Tutorial schlecht sein muss, aber es erfüllt gleich drei Punkte, von denen jeder einzelne ein ziemlich starkes Alarmzeichen ist, dass man lieber die Finger davon lassen sollte. Falls das Ding nichts taugt, dann tust du dir auch keinen Gefallen damit, diesen Hinweis zu ignorieren. Denn wenn man etwas schlecht lernt, dann ist es schwer, die schlechten Angewohnheiten später wieder zu verlernen. Vermutlich gibst du sogar eher frustriert auf, weil nichts richtig funktioniert und du nichts kapierst.PS: Auf Youtube gibt es viel zu viele Videos, die zu der Beschreibung passen, daher kann ich nichts spezielles sagen. Jockelx hat ja schon etwas an deinem Code bemängelt, wobei ich zu seiner Kritik nichts weiter sagen kann, da ich mich mit dem Thema nicht ausreichend gut auskenne.
-
Homiophat schrieb:
Also um nochmal auf das Tutorial Thema zurück zu kommen.
Entschuldige bitte, ich hab wohl nur den Teil gelesen, wo es so aussah, dass du ein Tutorial schreiben willst.
Was nach 2 Tage C++ natürlich albern wirkte. Gut, dass du das nochmal klar gestellt hast.Homiophat schrieb:
Ich denke ihr werdet bald wieder etwas von mir hören
Schön. Bin zwar der gleichen Meinung, wie wohl der meisten Anderen hier, dass dein Vorgehen nicht optimal ist, aber solange es dir was bringt, ist ja alles in Ordnung.
Um ein Buch und die SFML-Doku wirst du aber mittelfristig nicht drum herum kommen.
-
Bashar schrieb:
Versteh ich auch nicht, die sind beide gleich falsch:
const sf::Sprite &getSprite() {return *pSprite;); // ^ // ???Yo, müsste return( ***pFanta ); heissen.
-
2 Dinge, die mir so spontan aufgefallen sind:
Im Threadtitel und in mehreren Beiträgen "Verständniss" => "Verständnis".
Im code: statt
#include <SFML\Graphics.hpp>besser
#include <SFML/Graphics.hpp>Das Trennzeichen für Verzeichnisse ist bei den meisten Betriebssystemen '/' und nicht '\'. Und auch DOS und Windows verstehen inzwischen '/'.