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
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 <map> #include <memory> #include <string> #include <cassert> #include <stdexcept> #pragma once namespace LE { template <typename Resource, typename Identifier> class ResourceHolder { public: void load(Identifier id, const std::string& filename); template <typename Parameter> void load(Identifier id, const std::string& filename, const Parameter& secondParam); Resource& get(Identifier id); const Resource& get(Identifier id) const; private: std::map <Identifier, std::unique_ptr<Resource>> mResourceMap; void insertResource(Identifier id, std::unique_ptr<Resource> resource); }; } #include "ResourceHolder.inl" |
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
namespace LE { template <typename Resource, typename Identifier> void ResourceHolder<Resource, Identifier>::load(Identifier id, const std::string& filename) { // Create and load resource std::unique_ptr<Resource> resource(new Resource()); if (!resource->loadFromFile(filename)) throw std::runtime_error("ResourceHolder::load - Failed to load " + filename); // If loading successful, insert resource to map insertResource(id, std::move(resource)); } template <typename Resource, typename Identifier> template <typename Parameter> void ResourceHolder<Resource, Identifier>::load(Identifier id, const std::string& filename, const Parameter& secondParam) { // Create and load resource std::unique_ptr<Resource> resource(new Resource()); if (!resource->loadFromFile(filename, secondParam)) throw std::runtime_error("ResourceHolder::load - Failed to load " + filename); // If loading successful, insert resource to map insertResource(id, std::move(resource)); } template <typename Resource, typename Identifier> Resource& ResourceHolder<Resource, Identifier>::get(Identifier id) { auto found = mResourceMap.find(id); assert(found != mResourceMap.end()); return *found->second; } template <typename Resource, typename Identifier> const Resource& ResourceHolder<Resource, Identifier>::get(Identifier id) const { auto found = mResourceMap.find(id); assert(found != mResourceMap.end()); return *found->second; } template <typename Resource, typename Identifier> void ResourceHolder<Resource, Identifier>::insertResource(Identifier id, std::unique_ptr<Resource> resource) { // Insert and check success auto inserted = mResourceMap.insert(std::make_pair(id, std::move(resource))); assert(inserted.second); } } |
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Schweregrad Code Beschreibung Projekt Datei Zeile Fehler C2988 Unerkannte Vorlagendeklaration/-definition sfml_game_development c:\users\luca\documents\visual studio 2015\projects\sfml_game_development\sfml_game_development\resourceholder.inl 6 Fehler C2143 Syntaxfehler: Es fehlt ";" vor "<" sfml_game_development c:\users\luca\documents\visual studio 2015\projects\sfml_game_development\sfml_game_development\resourceholder.inl 6 Fehler C2182 "ResourceHolder": Unzulässige Verwendung des Typs "void" sfml_game_development c:\users\luca\documents\visual studio 2015\projects\sfml_game_development\sfml_game_development\resourceholder.inl 6 Fehler C2059 Syntaxfehler: "<" sfml_game_development c:\users\luca\documents\visual studio 2015\projects\sfml_game_development\sfml_game_development\resourceholder.inl 6 Fehler C2143 Syntaxfehler: Es fehlt ";" vor "{" sfml_game_development c:\users\luca\documents\visual studio 2015\projects\sfml_game_development\sfml_game_development\resourceholder.inl 20 Fehler C2447 "{": Funktionsheader fehlt - Parameterliste im alten Stil? sfml_game_development c:\users\luca\documents\visual studio 2015\projects\sfml_game_development\sfml_game_development\resourceholder.inl 20 Fehler C2988 Unerkannte Vorlagendeklaration/-definition sfml_game_development c:\users\luca\documents\visual studio 2015\projects\sfml_game_development\sfml_game_development\resourceholder.inl 31 Fehler C2143 Syntaxfehler: Es fehlt ";" vor "<" sfml_game_development c:\users\luca\documents\visual studio 2015\projects\sfml_game_development\sfml_game_development\resourceholder.inl 31 Fehler C2040 "LE::ResourceHolder": "Resource &" unterscheidet sich von "int" in Bezug auf die Anzahl vorgenommener Dereferenzierungen sfml_game_development c:\users\luca\documents\visual studio 2015\projects\sfml_game_development\sfml_game_development\resourceholder.inl 31 Fehler C2059 Syntaxfehler: "<" sfml_game_development c:\users\luca\documents\visual studio 2015\projects\sfml_game_development\sfml_game_development\resourceholder.inl 31 Fehler C2143 Syntaxfehler: Es fehlt ";" vor "{" sfml_game_development c:\users\luca\documents\visual studio 2015\projects\sfml_game_development\sfml_game_development\resourceholder.inl 41 Fehler C2447 "{": Funktionsheader fehlt - Parameterliste im alten Stil? sfml_game_development c:\users\luca\documents\visual studio 2015\projects\sfml_game_development\sfml_game_development\resourceholder.inl 41 Fehler C2988 Unerkannte Vorlagendeklaration/-definition sfml_game_development c:\users\luca\documents\visual studio 2015\projects\sfml_game_development\sfml_game_development\resourceholder.inl 49 Fehler C2143 Syntaxfehler: Es fehlt ";" vor "<" sfml_game_development c:\users\luca\documents\visual studio 2015\projects\sfml_game_development\sfml_game_development\resourceholder.inl 49 Fehler C2182 "ResourceHolder": Unzulässige Verwendung des Typs "void" sfml_game_development c:\users\luca\documents\visual studio 2015\projects\sfml_game_development\sfml_game_development\resourceholder.inl 49 Fehler C2374 "LE::ResourceHolder": Neudefinition; Mehrfachinitialisierung sfml_game_development c:\users\luca\documents\visual studio 2015\projects\sfml_game_development\sfml_game_development\resourceholder.inl 49 Fehler C2059 Syntaxfehler: "<" sfml_game_development c:\users\luca\documents\visual studio 2015\projects\sfml_game_development\sfml_game_development\resourceholder.inl 49 Fehler C2143 Syntaxfehler: Es fehlt ";" vor "}" sfml_game_development c:\users\luca\documents\visual studio 2015\projects\sfml_game_development\sfml_game_development\resourceholder.inl 55 |
Alter Hase
Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy
Werbeanzeige