C++ GUI-Problem
-
Funktionen haben den Vorteil, das Sie Code lesbarer und besser debugbar machen. Die Verlangsamung des Codes ist eher zu vernachlässigen, da gute Compiler hier sehr gut optimieren können.
Makros werden nicht zu unrecht in C++ vergleichsweise selten eingesetzt.
-
hmm, ja.
Nur wie würdest du den JavaScript-Stil machen?document.funktion().funktion()dahinter verbirgt sich ja nur
document.array[].function()Dieses Makro ist also genaugenommen keines sondern nur eine "verschönerung". Zudem ist das das einzige Makro im Code neben verschiedenen Flags( #define FLAG 1 )
-
ChristophLu schrieb:
Kannst du mal ein Beispiel bringen mit dem new[] ?
Type *data = new Type[anzahl];Ich lege dir dennoch dringend ans Herz, einen Standardcontainer zu benutzen. Zum Beispiel
std::vector.
Lies ein Tutorial. Hier in der FAQ gibt es bestimmt Links auf gute Tutorials für das grundlegende Einmaleins.Was meinst du bei 2.?
Dass du Bezeichner mit einem _ am Anfang nicht benutzen darfst.
Das es enum gibt weis ich. Nur wo sollte ich das hier einsetzen?
int _gui::createElement( int type )Wenn du aus dem
int typeeinen Enum-Typen machst, wird dein Code besser lesbar und weniger fehleranfällig, weil man dann kaum noch falsche Parameter aus Versehen übergeben kann.Funktionen sind nicht besser als Makros. Makros können im günstigsten Fall zu konstanten ersetzt werden. Wobei Funktionen erst vergleichsweise Lange durchgekaut werden.
Naja, du solltest zuerst mal fähig sein korrekte Programme zu schreiben, bevor du dir über solche Nichtigkeiten Gedanken machst.
-
Kannst du mal ein Beispiel bringen mit dem new[] ?
http://en.wikipedia.org/wiki/New_(C%2B%2B)
Was meinst du bei 2.? Es ist doch egal, wie ich meine Klassen nenne, oder? es sind doch nur Namen.
Er meint wahrscheinlich das du deine Klasse nicht mit einem "_" beginnen sollst, weil die Präprozessoranweisungen meistens so beginnen.
-
ja, nur dann erstell ich ja ein komplett neues Array. Ich will aber das vorhandene nur erweitern.
Ich kann sehr wohl korrekte Programme schreiben! Nur lerne ich gerade C++, weil ich vorher nur in C programmiert habe!
-
ChristophLu schrieb:
ja, nur dann erstell ich ja ein komplett neues Array. Ich will aber das vorhandene nur erweitern.
Ich schreibs jetzt zum dritten und letzten mal: Lies ein Tutorial und lerne, wie Standardcontainer funktionieren.
ChristophLu schrieb:
Ich kann sehr wohl korrekte Programme schreiben!
Ich rede von C++, und da bist du noch ein gutes Stück davon entfernt.
Nur lerne ich gerade C++, weil ich vorher nur in C programmiert habe!
Das sieht man. Wenn du kannst, versuch dein Wissen über C nicht nach C++ zu übertragen. In C++ macht man so ziemlich alles anders und C-Techniken sind da nur hinderlich.
-
ChristophLu, für Konstruktoren solltest du die Initialisierungsliste verwenden:
gui::gui() : number(0), elems(NULL), isElementActive(false), ActiveElementId(-1) { }Wie du siehst, brauchst du auch die Klassenzugehörigkeit nicht (bzw. nur in Zweifelsfällen) anzugeben, solange du dich innerhalb von Memberfunktionen der Klasse befindest. Aber ich würde dir auch raten, ein gutes C++-Buch zu kaufen und C++ nochmals von vorne neu zu beginnen. Das bringt mehr, als wenn du verkrampft versuchst, dein C in C++ anzuwenden.
Registrierter Troll schrieb:
Das sieht man. Wenn du kannst, versuch dein Wissen über C nicht nach C++ zu übertragen. In C++ macht man so ziemlich alles anders und C-Techniken sind da nur hinderlich.
Wäre ein gutes Beispiel für die Diskussion von neulich...
-
@ChristophLu's Code
Es wäre lustig wenn du sehen könntest wie deine Augen behindert von links nach rechts hüpfen
-
sieht nämlich JS style aus. bist wahrscheinlich voll der JS freak was
-
Habt ihr Langeweile? Das einzige, was bei ChristophLus Code vielleicht anzumerken ist, sind die etwas grossen Einrückungen. Aber wenigstens hat er konsequent eingerückt, die CPP-Tags richtig verwendet und seinen Code auch sonst recht übersichtlich gestaltet. Ihr könntet eure Kommentare lieber für die Leute sparen, die es nach fünfmaliger Aufforderung immer noch nicht schaffen, Code anständig zu formatieren.
-
Was war an meinem Kommentar so schlimm ? Ich denke es war verständlich genug das er es mit der Einrückung nicht ganz so übertreiben soll. Ich dachte "wo is der Rückgabetyp für createElement?". 3 Tabulator weiter hinten hab ich ihn dann gefunden. Immer 2 Tabulator für Einrückung muss net sein. Was macht er denn wenn er mal eine kompliziertere Verschachtelung schreiben muss ? 2 Minuten lang nach rechts scrollen?
Klar, der code ist so okay und er hat die Einrückung immer eingehalten. Bei den Funktionen ist es nicht ma so schlimm, aber die Klasse find ich schlimm.
-
Also ich persönlich finde die Einrückungen nicht übertrieben und äußerst leserlich. Mag vielleicht sein, das sie in eureim Browser anders angezeigt werden...
Zudem hab ich immer noch das Problem mit dem Instanz-Array. Einfach nur ein dynamisches(!) Array anzulegen/erweitern/löschen, welches die Instanzen von _gui_element( ja, die Klassen habe ich in der zwischenzeit umbenannt ) speichert.
Anlegen erscheint mir einfach:
_gui_element *elems;Außerdem noch das löschen:
delete [] elems;Nur wie kann ich das um ein Element erweitern?
-
ChristophLu schrieb:
Nur wie kann ich das um ein Element erweitern?
Indem du die Ratschläge befolgst und mit STL-Containern arbeitest. Dynamische Arrays kannst du in C++ nicht "erweitern" (statische erst recht nicht).