"expected initializer before '<' token"
-
Hallo zusammen,
ich bekomme bei meinem Versuch eine Template in eine Header-Datei und eine (für GCC) .tcc Datei (.inl) aufzuteilen jene Fehlermeldung und ich komm nicht drauf, was dem Kompiler nicht passt.
ResourceHolder.hpp:
#include <string> #include <map> #include <memory> template <typename Resource, typename Identifier> class ResourceHolder { public: void load( Identitifer, std::string const& ); Resource& get( Identitifer ); Resource const& get( Identifier ) const; private: std::map<Identifier, std::unique_ptr<Resource>> mResourceMap; }; #include "ResourceHolder.tcc"
ResourceHolder.tcc:
template <typename Resource, typename Identifier> void ResourceHolder<Resource, Identifier>::load( Identifier id, std::string const& filename ) { std::unique_ptr<Resource> resource( new Resource() ); if( !resource->loadFromFile( filename )) throw std::runtime_error("ResourceHolder::load() - Failed to load " + filename ); auto inserted = mResourceMap.insert( std::make_pair( id, std::move( resource )) ); assert( inserted.secound ); }
Ich würde mich sehr freuen, wenn jemand mich auf meinen Fehler aufmerksam machen kann...
mfg
HarteWare
-
Und wir sollen die Zeile jetzt raten?
-
Du hast Identifier in den Memberfunktionsdeklarationen falsch geschrieben.
-
Hallo nochmal und danke für eure schnellen Antworten
@manni : Natürlich, my bad! Fehler zeigts in Zeile 2 der tcc Datei an.
@Nathan: OOH, peinlich, danke! Habs geändert, aber daran hat es nicht gelegen.
mfg
HarteWare
-
Hast du deiner IDE gesagt, dass sie ResourceHolder.tcc nicht kompilieren soll?
Sonst kompiliert sie sie nämlich und wundert sich, was ResourceHolder ist.
-
Awesome; Konnte das Problem lösen und es wird nun einwandfrei kompiliert, vielen Dank! Da wär ich nie im Leben allein drauf gekommen
mfg
HarteWare