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
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Oh, also dann so:Erstens nicht als value
C-/C++-Quelltext |
|
1 2 3 |
case Textures::ASTEROID: return m_rTexture; break; |
Aber die Kalsse erbt doch von sf::NonCopyable.zweitens nicht sf::Texture, sondern die neue Spezialklasse, die non-copyable ist.
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
C-/C++-Quelltext |
|
1 |
sf::Texture RessourcenManager::getTexture(Textures textureName) |
C-/C++-Quelltext |
|
1 |
sf::Texture RessourcenManager::getTexture(Textures &textureName) |
C-/C++-Quelltext |
|
1 2 3 4 |
class Texture : public sf::Texture, sf::NonCopyable { // hier die entsprechenden constructor einfügen }; |
C-/C++-Quelltext |
|
1 |
Texture& RessourcenManager::getTexture(Textures textureName) |
Ist das jetzt dein ernst?
Deine Texture Klasse sähe wie folgt aus.
C-/C++-Quelltext
1 2 3 4 class Texture : public sf::Texture, sf::NonCopyable { // hier die entsprechenden constructor einfügen };
Und in deinem Manager nutzt du es wie folgt:
C-/C++-Quelltext
1 Texture& RessourcenManager::getTexture(Textures textureName)
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 |
#pragma once #include "core\include\Game.hpp" #include <string> class RessourcenManager : public sf::NonCopyable { public: RessourcenManager(); // Die ganzen Texturen enum Textures { ASTEROID = 0, PLAYER = 1 }; sf::Texture getTexture(Textures &textureName); private: void loadAsteroidTextur(); private: sf::Texture mAsteroidTexture; // Referenz auf die Textur sf::Texture &m_rTexture = mAsteroidTexture; }; |
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 |
#include "include\RessourcenManger.hpp" RessourcenManager::RessourcenManager() { loadAsteroidTextur(); } void RessourcenManager::loadAsteroidTextur() { if (!m_rTexture.loadFromFile("assets/textures/player/Raumschiff.png")) throw std::runtime_error("Konnte die Textur nicht laden - AsteroidManger.cpp"); } sf::Texture RessourcenManager::getTexture(Textures &textureName) { switch (textureName) { case Textures::ASTEROID: return m_rTexture; case Textures::PLAYER: break; default: throw std::runtime_error("Konnte die Textur nicht laden - RessourcenManager.cpp"); } } |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »cojo2015« (15.10.2015, 16:56)
Alter Hase
Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy
Ich würde jetzt einfach mal sagen solide beratungsresistent!
Es kann doch nicht so schwer sein, bei Google zu recherchieren, was eine Referenz ist und wie man diese Zurück gibt.
Mal davon abgesehen, dass das eigentlich Basics sind.
Gefühlt werden hier nacheinander deine ganzen Probleme abgearbeitet, die immer dann auftreten wenn du eine neue Klasse erstellt hast (Das gilt auch Thread übergreifend).
Nimm dir bitte die Ratschläge der anderen zu herzen!
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 |
class Test { public: const std::string &getValue() const { return _value; } private: std::string _value; }; |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »cojo2015« (15.10.2015, 18:09)
Werbeanzeige