Konvertierung von ModelNode* in ModelNodePtr (mit ModelNodePtr := ModelNode*) nicht möglich



  • Hi,

    namespace Engine
    {
    class Model
    {
    // ...
    private:
    // ...
    typedef ModelNode* ModelNodePtr;
    // ...
    void cacheNodes( const ModelNodePtr rootNode );
    // ...
    };
    }
    
    	void Model::cacheNodes( const ModelNodePtr rootNode )
    	{
    		modelNodes_.insert(std::make_pair(rootNode->GetName(), rootNode));
    
    		BOOST_FOREACH(const ModelNode& node, rootNode->GetChildren())
    			cacheNodes(&node);
    	}
    

    Er meckert in der cacheNodes-Aufrufzeile:

    1>c:\users\michael\documents\visual studio 2010\projects\sdl ogl\engine\engine\model.cpp(310): error C2664: 'Engine::Model::cacheNodes': Konvertierung des Parameters 1 von 'const Engine::ModelNode *' in 'const Engine::Model::ModelNodePtr' nicht möglich
    1> Durch die Konvertierung gehen Qualifizierer verloren

    Was für Qualifizierer gehen denn verloren und wieso ist das ein Problem?

    Danke!



  • Weil const bei "const Engine::ModelNode *" auf das Objekt wirkt und bei "const Engine::Model::ModelNodePtr" auf den Zeiger.



  • oh, mist. dann brauch ich also einfach ein zweites typedef. Danke!



  • In dem Fall würde ich die typedefs ganz weglassen. Ist aber natürlich Geschmackssache.


Anmelden zum Antworten