ciao.
Ho questa classe di un progetto open sorce,
questo è il .inlcodice:#ifndef WM5RTTI_H #define WM5RTTI_H #include "Wm5CoreLIB.h" namespace Wm5 { class WM5_CORE_ITEM Rtti { public: // Construction and destruction. The name must be unique among all // objects in the system. In the Wm5 namespace, a class Foo should use // "Wm5.Foo". If an application has another namespace, SomeName, then // the name should be "SomeName.Foo". Rtti (const char* name, const Rtti* baseType); ~Rtti (); inline const char* GetName () const; inline bool IsExactly (const Rtti& type) const; bool IsDerived (const Rtti& type) const; private: const char* mName; const Rtti* mBaseType; }; #include "Wm5Rtti.inl" }
e questo il .cpp:codice://---------------------------------------------------------------------------- inline const char* Rtti::GetName () const { return mName; } //---------------------------------------------------------------------------- inline bool Rtti::IsExactly (const Rtti& type) const { return (&type == this); }
codice:using namespace Wm5; //---------------------------------------------------------------------------- Rtti::Rtti (const char* name, const Rtti* baseType) { mName = name; mBaseType = baseType; } //---------------------------------------------------------------------------- Rtti::~Rtti () { } //---------------------------------------------------------------------------- bool Rtti::IsDerived (const Rtti& type) const { const Rtti* search = this; while (search) { if (search == &type) { return true; } search = search->mBaseType; } return false; } //----------------------------------------------------------------------------
perchè usa un .inl per dichiarare delle funzioni inline?
perchè mette alcune funzioni inline e non tutte?
è solo una delle tante classi del progetto che lo fanno.
perchè?
grazie.

Rispondi quotando