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 verlorenWas 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.