"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


Anmelden zum Antworten