IMPLEMENT_DYNCREATE
Abilita gli oggetti di CObjectdi classi derivate da creare dinamicamente in fase di esecuzione quando è utilizzato con la macro di DECLARE_DYNCREATE .
IMPLEMENT_DYNCREATE(class_name, base_class_name )
Parametri
class_name
Il nome effettivo della classe.base_class_name
Il nome effettivo della classe base.
Note
Il framework utilizza questa possibilità di creare dinamicamente i nuovi oggetti, ad esempio, quando legge un oggetto dal disco durante la serializzazione.Aggiungere la macro di IMPLEMENT_DYNCREATE nel file di implementazione della classe.Per ulteriori informazioni, vedere Argomenti relativi alle classi di CObject.
Se si utilizzano le macro di IMPLEMENT_DYNCREATE e di DECLARE_DYNCREATE , sarà possibile utilizzare una macro di RUNTIME_CLASS e la funzione membro di CObject::IsKindOf per determinare la classe degli oggetti in fase di esecuzione.
Se DECLARE_DYNCREATE è incluso nella dichiarazione di classe, quindi IMPLEMENT_DYNCREATE deve essere incluso nell'implementazione della classe.
Si noti che questa definizione macro richiama il costruttore predefinito per la classe.Se un costruttore non comune in modo esplicito viene implementato dalla classe, inoltre necessario implementare in modo esplicito il costruttore predefinito anche.Il costruttore predefinito può essere aggiunto a private della classe o alle sezioni del membro di protected per impedire che venga chiamato dall'esterno dell'implementazione della classe.
Esempio
class CMyDynCreateObj : public CObject
{
int m_Num;
public:
DECLARE_DYNCREATE(CMyDynCreateObj)
CMyDynCreateObj(int Num) { m_Num = Num; }
private:
CMyDynCreateObj() { m_Num = 0; } // provide default constructor only for
// dynamic creation
};
IMPLEMENT_DYNCREATE(CMyDynCreateObj, CObject)
Requisiti
Header: afx.h