Suchergebnisse
Suchergebnisse 1-20 von insgesamt 22.
Also ich bin kein Profi, aber vielleicht kann ich die Profis hier mit einem kleinen "Denkanstoß" auf die richtige Fährte bringen... Ich meine gelesen zu haben das man einen Iterator nicht mehr benutzen sollte nachdem man irgendetwas in einem Vector geändert hat. Ich glaube weiter wo anders gelesen zu haben das die interne Verwaltung bei einer Änderung eines Vectors diesen komplett neu (dann an einer anderen Speicheradresse) erstellt und den alten komplett löscht. Somit würde sich die Fehlermeldu...
Ja, so einfach kann es sein. Hab in C1.h ein Quellcode 1 class C2; und in C2.h Quellcode 1 class C1; eingebaut und schon läuft die Sache... hätte ich auch selbst drauf kommen können ;-) Trotzdem vielen Dank !!!
Ich hab mal wieder eine Frage... ;-) Wie kann man in 2 Klassen Zeiger auf Objekte der jeweils anderen Klasse einbauen ? Beispiel : Quellcode 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class C1 { C1(void); ~C1(void); C2 *pC2; } class C2 { C2(void); ~C2(void); C1 *pC1; } Wenn ich das versuche, spuckt mir der Compiler Fehlermeldungen aus. Das versteh ich ja irgendwie auch. Weil in der Klasse C1 ist ja C2 noch nicht bekannt und somit kann keine Zeiger auf C2 angelegt werden. Da gibts aber doch aber sicher ...
Ah ja, langsam lichtet sich die virtuelle Dunkelheit ;-) Also wird bei virtuellen Methoden die tatsächlich übergebene Klasse (z.B. abgeleitete Klasse welche ja in ihre Basisklasse umgewandelt werden kann) benutzt und bei nicht-virtuellen die als Übergabe erwartete (also der Typ des Übergabeparameters) Klasse ? Kann man dann also Grundsätzlich sagen, das wenn vererbte Methoden angepasst werden sollen (von den beerbten Klassen), man sie IMMER als virtual deklarieren sollte? Oder gibts auch Situati...
Was hat es denn nun genau mit diesem dubiosen "virtual" auf sich? Wenn ich in einer Klasse eine Funktion als virtual kennzeichne, macht sie genau das gleiche wie wenn ich es nicht tue. Auch wenn ich eine andere Klasse von dieser ableite, dann tut die Funktion immer noch das gleiche. Und wenn ich diese Funktion in der abgeleiteten Klasse überschreibe dann nimmt er logischer Weise die neue Funktion. Aber da ist es vollkommen egal ob die Funktion in der Basisklasse virtual ist oder nicht. Laut mein...
Aha! Ok. D.h. Methode ist dann als konstant zu deklarieren wenn sie keine Eigenschaften verändert. Oder umgekehrt : Konstante Objektmethoden können keine Objekteigenschaften ändern. Diese Regel kann ich aber umgehen in dem ich Eigenschaften die doch verändert werden sollen als "mutable" deklariere. Außerdem können konstante Objekte nur ihre ebenfalls konstante Methoden aufrufen. Hab ich das richtig verstanden ?
Ok. Verstanden. Nur was hat es nun mit den konstanten Funktionen auf sich? Was ist daran konstant bzw. wann kann/soll ich die als konstant deklarieren ?
Ah ja. D.h. es ändert nix am Code oder am Ablauf sondern "nur" an der Performance ? Also sollte man Grundsätzlich const verwenden wenn möglich ?
Ich hätte da mal eine ganz allgemeine Frage. Was habe ich davon eine Variable oder eine Funktion als Konstant zu deklarieren? Mir ist klar das wenn ein anderer dann meine Variablen benutzt das er diese nicht aus versehen verändert. Aber Funktionen ?? Viele Grüße, Thorsten
Genau. Hab die neu installiert und schon lief alles... und da soll man als C++-Anfänger erstmal drauf kommen :-)
So... hab den Visual C++ Express Edition + Platform SDK auf einem anderen PC installiert, mein von euch verbessertes und bei mir nicht laufendes Listing reinkopiert, gestartet und siehe da... es läuft... liegt wohl an meiner Installation... werd das heute Abend mal alles runterwerfen und neu installieren... und wegen sowas zweifelt man schon an seiner Auffassungsgabe.... *grummel* Trotzdem vielen Dank an alle und sorry für die ewige Fragerei... P.S. und für meine Faulheit *fg zu flux* ;-)
Kein Problem flux. Langsam glaube ich das da mit dem Compiler was nicht stimmt. Vielleicht sollte ich den mal deinstallieren, die PSDK runterwerfen und beides nochmal neu installieren. Weil so blöd bin ich normalerweise nicht das ich das überhaupt garnicht hinbekomme... außerdem habe ich jetzt gemerkt das die Vorgabe wenn ich eine Win32-Application erzeugen lasse (also das Grundgerüst) die gleiche Fehlermeldung bekomme :-)
Also... wenn es Faul ist das ich seit 2 Tagen hier sitze und dieses blöde Problem lösen will dann weiß ich nicht wie ihr das macht... Ich habe das selbe Probiert... mit dem Erfolg das ich besagte Linker-Fehlermeldungen bekommen hab... also bevor du Anschuldigungen über Faulheit loslässt, solltest du mal über 2 Dinge nachdenken : 1) Wenn ich dieses Buch lese um das es hier in diesem Teil des Forums geht bin ich sicher kein Profi sondern fange mit der Materie erst an 2) Vielleicht mal vorher nachf...
Ach ja... und wenn ich Quellcode 1 2 3 4 5 6 7 8 9 10 11 12 ... hWnd = CreateWindowExW (NULL, szClassName, _T("Fenstertitel"), WS_OVERLAPPEDWINDOW | WS_VISIBLE, 100, 100, 300, 250, NULL, NULL, hInst, NULL); ... schreibe kommen 10 Linker-Fehlermeldungen ... die ersten 9 lauten Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__DispatchMessageW@4" in Funktion "_WinMain@16". win.obj mit diversen anderen externen Symbolen... und der 10. Fehler 10 fatal error LNK1120: 9 nic...
Schön... und jetzt weiß ich das TCHAR ein Typedef (=Synonym) von WCHAR ist... was wiederum ein typedef von wchar_t ist... und LPCWSTR ein Zeiger auf ein WCHAR... Und jetzt ? Mein Code funzt immer noch nicht... ;-) Sag doch einfach mal die lösung. Dann kann ich mir darüber Gedanken machen wieso es so sein muß und wieso es so wie es jetzt ist nicht funktioniert...
Sehr hilfreich... :-/ und so produktiv...
Wenn du mir jetzt noch verrätst wie ich dein Kommentar in der "CreateWindowEx" umsetzen kann ? Wie und wo wird dieses ominöse _T eingesetzt...und vor allem wo steht das denn im Buch ???? :-) Sorry wenn ich mich blöd anstellen sollte... ;-) Und... wenn wir schonmal dabei sind... könnt ihr mir mal genau erklären (oder sagen wo ich dazu was finde) was TCHAR und LPCWSTR ist ? In der VS-HIlfe finde ich dazu leider nix... oder ich bin zu blöd zum suchen :-)
Das hatte ich doch als erstes getestet (s. mein erstes Posting hier). Trotzdem kommt der Fehler. Dann der Hinweis mit dem TCHAR und wieder der gleiche Fehler...
Also ich hab keine Ahnung was ich falsch mache. Ich hab genau den Teil ausgetauscht den ihr gesagt habt und trotzdem habe ich die Fehlermeldung Fehler 1 error C2664: 'CreateWindowExW': Konvertierung des Parameters 3 von 'const char [13]' in 'LPCWSTR' nicht möglich Hier nochmal das Listing das ich von der Buch-CD geladen und mit eurer Hilfe korrigiert habe. Ich habe die Stelle an der der Compiler meckert mal makiert : Quellcode 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ...
Sehr schön. Das ist doch mal eine konkrete Antwort. Wie gesagt werd ich das gleich heute Abend mal probieren. Leider muß ich erstmal meine 8 Std. absitzen... ääähm... ich meinte arbeiten ;-)