Brett vor'm Kopf? Betr. Zeiger ->
-
Hallo...
Mit Folgende Funktion soll die 'View' gezoomt werden.
Funktion befindet sich in CMainFrame.void CMainFrame::OnSelChangeZoom() { // Neue Auswahl des Kombinationsfelds ermitteln // Abgewanddeltes Listing aus Visual C++ 6 in 21 Tagen // Tag12 CModelldesignerView* pMDView; int nIndex = m_zoomauswahl.GetCurSel(); if(nIndex == CB_ERR) return; CString ausgabe; m_zoomauswahl.GetLBText(nIndex, ausgabe); AfxMessageBox(ausgabe); //Kontrollausgabe if(ausgabe == "150%") m_zoomweite = 1500; if(ausgabe == "100%") m_zoomweite = 1000; if(ausgabe == "50%") m_zoomweite = 500; pMDView->m_zoomfkt = m_zoomweite; }
Kompilierung läuft, bis auf folgende Warnung:
*
C:\programmieren test\Modelldesigner\MainFrm.cpp(243) : warning C4700: Lokale Variable 'pMDView' wurde ohne Initialisierung verwendet*Im Programmablauf kommt es zum Absturz mit der Fehlermeldung:
*
Die Anweisung in "xyz" verweist auf Speicher in "abc"...
*
Also wahrscheinlich ein Zeiger ins Nirvana...Folgende Abwandlung hatte ich auch ausprobiert:
Funktion in die View-Klasse geschrieben und dann wollt ich zur Auswertung mit einem Zeiger halt m_zoomauswahl aus CMainFrame abholen.
Natürlich kam es zum selben Problem.Irgendwie kom ich mir etwas töffelich vor.
RanCarter
P.S. Die 'View' soll danach natürlich auch noch neu gezeichnet werden.
-
pMDView zeigt allerdings ins Nirvana ... du hast den Zeiger ja nirgends initialisiert.
-
Original erstellt von dEUs:
pMDView zeigt allerdings ins Nirvana ... du hast den Zeiger ja nirgends initialisiert.Dann steh ich wohl vor einem Anfängerproblem. :p
Ein kleines Beispiel wäre da jetzt nicht schlecht.
In anderen Postings hab ich folgendes gesehen:CKlasseDlg *pZeiger = new CKlasseDlg;
Hier hab ich dann folgendes gemacht:
CModelldesignerView* pMDView = new CModelldesignerView;
Dann mauelt er aber, weil das dann alles Protected is.
-
ne, das is sinnlos. du brauchst ja nen eiger auf die aktuelle Instanz deines Views! Nicht nen Neuen!
-
Original erstellt von dEUs:
ne, das is sinnlos. du brauchst ja nen eiger auf die aktuelle Instanz deines Views! Nicht nen Neuen!UPS!!!
Also... mal für einen kleinen Hirni
Wie muß ich dat denn nu machen? :p
-
Ich hba sowas in der Form selbst noch nicht gemacht, aber ich denke ungefähr so:
CModelldesignerView* pMDView = this->GetActiveView();
-
Original erstellt von TheBigW:
**Ich hba sowas in der Form selbst noch nicht gemacht, aber ich denke ungefähr so:CModelldesignerView* pMDView = this->GetActiveView();**
Dann kommt folgende Fehlermeldung:
*C:\programmieren test\Modelldesigner\MainFrm.cpp(227) : error C2440: 'initializing' : 'class CView *' kann nicht in 'class CModelldesignerView ' konvertiert werden
Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
-
Dann musst du halt noch casten:
CModelldesignerView* pMDView = (CModelldesignerView*)this->GetActiveView();
-
Original erstellt von thomas80d:
**Dann musst du halt noch casten:CModelldesignerView* pMDView = (CModelldesignerView*)this->GetActiveView(); ```**
Merci !!!
Ham wa doch mal wieder was gelernt !!!Jetzt muß ich nur noch die 'View' neu Zeichnen lassen.
Woll'n mal hoffen, das ich das hinbekomme.
-
Original erstellt von rancarter:
**Dann kommt folgende Fehlermeldung:
C:\programmieren test\Modelldesigner\MainFrm.cpp(227) : error C2440: 'initializing' : 'class CView ' kann nicht in 'class CModelldesignerView ' konvertiert werden
Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder FunktionsformatDu hättest auch nur die Fehlermeldung lesen, verstehen und die dort angegebene Lösung umsetzen müssen.
Vielleicht könntest du das das nächste mal auch tun.
-
-
Mach Dir nichts draus, typisch C++ler.
-
Original erstellt von Erhard Henkes:
Mach Dir nichts draus, typisch C++ler.Uff... :o auf die 12 !
Aber mal im ernst. Ich glaub in Sachen Zeiger könnt ich mal etwas Nachhilfe gebrauchen. Besonders in Bezug auf Member-Variablen und deren Werteaustausch in MFC-Programmen.
Nach dem Motto Grenz ähh.. Klassenübergreifendes lesen und schreiben.
Bis jetzt besitze ich nur gefährliches Halbwissen !!!Ne nette Quellenangabe wär nicht schlecht. Buch oder besser Internet.
Über Google hab ich es schon versucht aber nicht so das richtige gefunden.Auf jedenfall wünsch ich allen ein schönes Wochenende.
RanCarter