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

81

16.10.2015, 06:07

Du musst die Methode genauso definieren wie du sie deklariert hast.

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

82

16.10.2015, 07:04

Wenn ich es so schreibe:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const sf::Texture RessourcenManager::&getTexture(Textures textureName) const
{
    switch (textureName)
    {
    case Textures::ASTEROID:
        return m_rTexture;

    case Textures::PLAYER:
        break;

    default:
        throw std::runtime_error("Konnte die Textur nicht laden - RessourcenManager.cpp");

    }

}


Dann bekomme ich diese Fehler:

Fehler C2589 "&": Ungültiges Token auf der rechten Seite von "::"
Fehler C2143 Syntaxfehler: Es fehlt ";" vor "::"
Fehler C2059 Syntaxfehler: "::"
Fehler C2143 Syntaxfehler: Es fehlt ";" vor "{"
Fehler C2447 "{": Funktionsheader fehlt - Parameterliste im alten Stil?

Ich habe auch schon ein wenig herumexperimentiert, aber es sind immer wieder Fehler :dash:

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

83

16.10.2015, 08:16

Ich denke, du solltest langsam wirklich das ganze hier zur Seite legen und dir endlich ein Buch kaufen und die Grundlagen noch einmal lernen, bevor du wieder mit irgendetwas anderem anfängst. Du scheiterst hier ja schon wieder an einem ganz grundlegenden Prinzip. Ich persönlich werde dich ab sofort auf meine Ignore setzen und dir nicht weiter helfen, bis du mit so einfachen Fragen aufhörst.

Du verschwendest hier aktuell die Zeit von uns allen, statt allein deine Zeit darin zu nutzen, ein ordentliches Buch zu lesen.

Cya.
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

84

16.10.2015, 09:20

Du verschwendest hier aktuell die Zeit von uns allen, statt allein deine Zeit darin zu nutzen

Ich weiß, dass ich vorallem eure Zeit sinnlos verschwende. Ich sollte mir wirklich mal Gedanken machen, wann ich in diesem Forum eine Frage stelle, oder ob die Lösung schon auf der Hand liegt, aber ich nicht in der Lage bin, diese auszuführen. Das "Ich entschuldige mich" will ich jetzt nicht benutzen, da ich es schon sehr oft benutzt habe und es dadurch so klinkt, als kenne ich keine anderen Worte dafür. Ich habe jetzt eine Möglichkeit gefunden, bei der der Kompiler keine Fehler gibt:

C-/C++-Quelltext

1
2
const sf::Texture &RessourcenManager::getTexture(Textures textureName) const
{ ... }


Das empfohlene Buch habe ich bestellt, kommt aber erst Anfang nächste Woche.
So langsam frage ich mich, ob programmieren das Richtige für mich ist, oder ab ich nicht in der Lage bin, einfache Zusammenhänge zu begreifen. Ich meine damit, dass ich nicht in der Lage bin, eine mögiche Lösung aus dem Internet auf mein Programm zu übertragen. Ist schon traurig und auch iregndwie peinlich, wenn man die Seitenanzahl des Threads sieht und es anschließend in Verbindung mit dem Problem bringt. Ich weis nicht, wie ich da wieder "gut" machen kann, dass ich eure Zeit und Speicerplatz auf dem Server missbrauche.
Mich würde es nicht wundern, wenn ich in naher Zeit aus diesem Forum gebannt werde, wegen sinnlosem Geschwafel.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

85

16.10.2015, 09:46

Nee, wegen sowas fliegt keiner. Die finale Deklaration sieht ja auch sinnvoll aus, bis auf die Tatsache, dass Du noch immer keine Klasse benutzt, die von sf::Texture und sf::NonCopyable erbt, sondern weiterhin eine stinknormale sf::Texture ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

86

16.10.2015, 11:06

Ich glaube du überforderst dich einfach und gehst zu schnell und zu ungeduldig an das ganze ran. Das neue Buch ist ja bestellt was gut ist. Arbeite das in Ruhe durch und mach schön die Übungsaufgaben. Lass von solchen Spielen vielleicht erst mal die Finger und versuch dich an einfacheren Dingen. Wenn es dann ein Spiel sein muss dann wirklich mit was einfachem anfangen und wenn es da nicht weiter geht gegebenenfalls einen Gang zurück schalten. Programmieren muss man eben erst mal lernen und C++ ist auch nicht unbedingt die einfachste Sprache wobei wir das hier gar nicht ausdiskutieren müssen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

87

16.10.2015, 14:32

Dann bekomme ich diese Fehler:

Fehler C2589 "&": Ungültiges Token auf der rechten Seite von "::"
Fehler C2143 Syntaxfehler: Es fehlt ";" vor "::"
Fehler C2059 Syntaxfehler: "::"
Fehler C2143 Syntaxfehler: Es fehlt ";" vor "{"
Fehler C2447 "{": Funktionsheader fehlt - Parameterliste im alten Stil?


Wie ist denn dein Vorgehen, wenn du versuchst diese Fehler zu beseitigen? Wenn wir einfach mal den Ersten nehmen, was versucht dir dieser zu sagen? Als Tip C2589. Versuche auch ruhig an die Sache an zu gehen, wie schon gesagt wurde gib dir Zeit. Versuche dich nur mit einem Fehler zur Zeit zu befassen, am besten fürs Erste, den Ersten in deiner Liste.

Es ist meiner Meinung nach essentiell Fehlermeldungen lesen, verstehen und taktisch bearbeiten zu lernen. Versuche so früh wie möglich dir ein gutes Vorgehen heraus zu Arbeiten, und investiere dort nicht zu wenig Zeit. Frag am besten nicht nur nach Fehlern, sondern beschreibe schrittweise wo du ins Stocken gekommen bist beim Versuch den Fehler Aufzulösen.
:love: := Go;

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

88

16.10.2015, 15:04

Wie ist denn dein Vorgehen, wenn du versuchst diese Fehler zu beseitigen? Wenn wir einfach mal den Ersten nehmen, was versucht dir dieser zu sagen?

Vorgehen:
1) Fehlerstelle finden. In diesem Falle steht sie schon in der Fehlermeldung. Wenn nicht, dann mache ich einen doppelklick auf die Fehlermeldung.
2) Stelle in der Fehlerzeile suchen. In diesem Falle schon wieder vorgegeben (rechts von den zwei Doppelpunkten)
3) Nach einer Lösung suchen. Wenn ich keine Lösung finde -> Google ist dein Freund und Helfer
4) Fehlerquelle eliminieren

Was versucht dieser mir zu sagen:
Rechts von den Doppelpunkten steht ein Symbol, was dort nicht stehen darf. D.h. es muss an einer anderen Stelle stehen oder es darf in dieser Zeile gar nicht stehen. Nun suche ich mir eine Stelle aus, an der es Sinn macht, dass das Symbol dort steht.

Nach 20 Minuten habe ich dieses Reultat ohne Fehlermeldungen:

C-/C++-Quelltext

1
const sf::Texture &RessourcenManager::getTexture(Textures textureName) const {...}


Nun rufe ich das so auf (als unique_ptr | in Game.hpp erstellt):

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
void Asteroid::loadAsteroid(Game &game)
{
    mTexture.setSmooth(true);

    mSprite.setOrigin(
        game.mManager->getTexture(RessourcenManager::ASTEROID).getSize().x / 2, 
        game.mManager->getTexture(RessourcenManager::ASTEROID).getSize().y / 2);    // Mittelpunkt ist genau in der Mitte der Textur
    mSprite.setTexture(game.mManager->getTexture(RessourcenManager::ASTEROID));

    mSprite.setPosition(randXPos(), -10.f);

}


@BC: Ich habe es so geändert. Ist das nun richtig?

C-/C++-Quelltext

1
class RessourcenManager : public sf::NonCopyable, public sf::Texture {...}

89

16.10.2015, 15:08

Du sollat eine neue Texturklasse erstellen:

C-/C++-Quelltext

1
2
class ATexture: public sf::Texture, sf::NonCopyable
{};

Diese hat das gleiche Aussehen wie sf:Texture, nur kann man Instanzen davon nicht ausversehen kopieren.

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

90

16.10.2015, 15:13

Du sollat eine neue Texturklasse erstellen:

Achso :dash: . Und diese Klasse verwende ich dann im RessourcenManager, richtig?

Werbeanzeige