Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » was ist warning C4541

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
02.01.2004, 23:02 Uhr
Darky



kann mir jemand diese warnmeldung erklären??????

\Menue.cpp(73) : warning C4541: 'dynamic_cast' fuer polymorphen Typ 'class CWnd' mit /GR- verwendet; unvorhersehbares Verhalten moeglich

der fehler muß hier irgendwo liegen
class Menue : basisclass CFormView

C++:
void Menue::OnBUTTON1basis()
{
    if (AfxGetApp()->GetMainWnd() != NULL)
    {
        CMainFrame* pFrm;
        pFrm = dynamic_cast<CMainFrame*>(AfxGetApp()->GetMainWnd());
        pFrm->SwitchWnd(3);
    }        
}



class CMainFrame : basisclass CFrameWnd

C++:
void CMainFrame::SwitchWnd(int viewNr)  
{
    switch (viewNr)
    {
        case 1:
            pSplit.ShowWnd(viewbasis);
            break;
        case 2:
            pSplit.ShowWnd(viewpatdat);
            break;
        case 3:
            pSplit.ShowWnd(viewpatkar);
            break;
    }
}




class CCRARSplitter : basisclass CSplitterWnd

C++:
void CCRARSplitter::ShowWnd(int nViewID)
{
    if (GetView(nViewID) == NULL)
        return;

    CPoint pane;
    GetPaneFromViewID(nViewID, &pane);

    // umschalten der fenster  
    HideActivView(pane.x, pane.y);
    SetActivView(pane.x, pane.y, nViewID);

    RecalcLayout();

}



sobald ich den button drücke um ein anderen CFormview dialog zu öffnen hängt sich der debugger auf ! er scheint nicht über dynamic_cast zu kommen & ich habe nur diese seltsame warnmeldung beim erstellen !
ist n sdi ->CView project mit splitter!
hat einer ne idee wo ich vor die wand laufe?????

Dieser Post wurde am 02.01.2004 um 23:04 Uhr von Darky editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.01.2004, 23:25 Uhr
Darky



so richtig hilft mir die ms-hilfe nicht

Code:


Compiler-Warnung (Stufe 1) C4540
Der dynamic_cast-Operator wird zur Konvertierung in eine nichtverfügbare oder mehrdeutige Basisklasse verwendet; Laufzeittest wird fehlschlagen ('Typ1' in 'Typ2')

Sie verwendeten dynamic_cast, um von einem Typ in einen anderen Typ zu konvertieren. Der Compiler konnte jedoch erkennen, daß die Typumwandlung nie ausgeführt wird (Rückgabe von NULL), da auf eine Basisklasse nicht zugegriffen werden konnte (beispielsweise ist die Basisklasse private) oder diese mehrdeutig ist (beispielsweise wird die Basisklasse mehr als einmal in der Klassenhierarchie angezeigt).

Hierzu ein Beispiel für diese Warnung. Klasse D ist von Klasse B abgeleitet. Das Programm verwendet dynamic_cast für die Typumwandlung von Klasse D (die abgeleitete Klasse) zu Klasse B. Dieses wird jedesmal fehlschlagen, da Klasse B private ist und daher kein Zugriff erfolgen kann. Die Änderung des Zugriffs auf B zu public wird dieses Problem beheben.

class B { virtual void g(); };
class D : private B {};

void a() {
   D   d;
   B*   bp;
   bp = dynamic_cast<B*>(&d); // Fehler C4540
}



Dieser Post wurde am 02.01.2004 um 23:28 Uhr von Darky editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.01.2004, 11:38 Uhr
Darky



hat denn keiner ne idee oder nen ähnlichen fehler schon gelöst???

hier muss der fehler liegen
CMainFrame*pFrm = dynamic_cast<CMainFrame*>(AfxGetApp()->GetMainWnd());

pFrm->SwitchWnd(3);->scheint gar nicht mehr ausgeführt zu werden

die klassen scheinen eindeutig zu sein und ich habe keine permanente NULL rückgabe sonst würde die zeile ja nicht ausgeführt werden(siehe oben)?

beim ausführen bekomm ich (nach betätigen eines buttons) die meldung
Runtime Error!
abnormal program termination

und beim debuggen lande ich immer irgendwo auf assemblerebene da steige ich absolut nicht durch!!

hilfe!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Dieser Post wurde am 03.01.2004 um 11:44 Uhr von Darky editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.01.2004, 11:59 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Mach mal Projekt > Einstellungen > C++ > Programmsprache C++ > Run-Time-Tyüpe-Information (RTTI) auf ein

mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
03.01.2004, 13:29 Uhr
Darky




jetzt geht es ????

ich danke dir oh du göttlicher, ich war schon am weinen!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
03.01.2004, 13:37 Uhr
mike
Pinguinhüpfer
(Operator)


Also göttlich bin ich bestimmt nicht
Aber es freut mich, dass es jetzt geht
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: