COject::IsKindof(RUNTIME_CLASS(....)); Problem!!!



  • folgende Kalssen hierachie:

    class CWorklist : public CObjekt{
    
    };
    
    class CWorkflow : public CWorklist{
    
    };
    class CWorkprofil : public CWorklist{
    
    };
    

    mach ich nun:

    CWorkflow *p= .....;

    Worklist t* = p;

    t->IsKindOf(RUNTIME_CLASS(CWorkflow));

    oder

    t->IsKindOf(RUNTIME_CLASS(CWorkprofil));

    wir mir beides mal true zurückgeben!! ich will aber zwischen CWorkflow und CWorkprifl unterscheiden?? was mach ich falsch??



  • Versuchs doch mal mit IsChildOf.



  • die funktion gibts nich von CObjekt

    ich hab ein Worklist Pointer udn will anhand dem rausfinden ob es sich in wahrheit aus einem Workflow oder Workprofil Pointer handelt!



  • Hallo,
    könnte das was bringen:

    CRuntimeClass* pRuntimeClass = NULL;
    pRuntimeClass = t->GetRuntimeClass();
    if(L"CWorklist" == pRuntimeClass->m_lpszClassName)
    {
        // tue was
    }
    else if(L"CWorkflow" == pRuntimeClass->m_lpszClassName)
    {
        // tue dies
    }
    else(L"CWorkprofil " == pRuntimeClass->m_lpszClassName)
    {
        // sonst das hier!
    }
    

    grüsse
    pixel


  • Mod

    In jeder Klasse müssen für die MFC Persistenz die entsprechenden Makros DECLARE_DYNAMIC und IMPLEMENT_DYNAMIC verwenden, sonst gehen die entsprechenden RUNTIME_CLASS Sachen nicht!


Anmelden zum Antworten