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.
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.
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.