Problem "klassenübergreifend" auf Variablen zuzugeifen



  • hallo, ich wollte aus der klasse

    CPicToLightView

    auf Variablen in der Klasse

    CPicToLightApp

    zugreifen.
    Dazu habe ich erst einmal folgendes gemacht:

    void CPicToLightView::OnBnClickedBtninithardw()
    {
        CANResult Res;
        CString strIO, strInterrupt, strTemp;
    
        CPicToLightApp* pApp = dynamic_cast<CPicToLightApp*>(AfxGetApp());
        ASSERT(pApp); ....
    

    Dabei bleibt das Programm aber stehen, an folgender Stelle:

    _CRTIMP void * __cdecl malloc (
            size_t nSize
            )
    {
     -->       void *res = _nh_malloc_dbg(nSize, _newmode, _NORMAL_BLOCK, NULL, 0);
    
            RTCCALLBACK(_RTC_Allocate_hook, (res, nSize, 0));
    
            return res;
    }
    

    Habe das doch so gemacht, wie es hier steht:

    2 C...App

    An die C...App kommt man von JEDER Klasse der Anwendung aus mit

    AfxGetApp();
    

    Da das aber noch nicht den richtigen Typ hat, muss gecastet werden. Ich nutze dynamic_cast, weil dieser am sichersten ist (RTTI muss eingeschaltet sein).
    Ein einfacher C-Cast funktioniert meistens auch - wenn er aber mal nicht funktioniert, wird es problematisch.

    C...App* pApp = dynamic_cast<C...App*>(AfxGetApp());
    ASSERT(pApp); // zur Sicherheit
    

    Wäre toll, wenn mir jemand mal einen schubs geben und sagen könne, was ich da falsch mache.

    Vielen Dank



  • mit folgendem funktionierts

    CPicToLightApp* pApp= STATIC_DOWNCAST(CPicToLightApp,AfxGetApp());
    

Anmelden zum Antworten