Anfängerfrage wegen Klasse



  • Singender Holzkübel schrieb:

    Warum allozierst du den Speicher nicht einfach dynamisch? (new[], delete[]).
    Spielfeld ist dann zwar ein eindimensionales "Array", aber das ist ja auch keine Problem.

    Direkt ne Ohrfeige verdient.

    Offensichtlich ist der OP noch nicht so erfahren, ihm dann aber Sauereien wie new/new[] anzubieten ist mehr als fahrlässig. Damit lässt du ihn schön vor die nächste Wand laufen, die dann nicht mehr so easy zu umschiffen ist.

    @OP:
    Nutz std:vector.



  • Skym0sh0 schrieb:

    Sauereien wie new/new[]

    Gesundheit.

    Skym0sh0 schrieb:

    Offensichtlich ist der OP noch nicht so erfahren, ihm dann aber Sauereien wie new/new[] anzubieten ist mehr als fahrlässig

    Speicherverwaltung in C++ ist fundamental. Einem C++ Anfänger zu raten irgendwelche Template-Klassen aus irgendwelchen Bibliotheken zu verwenden, und auf new/delete zu scheißen, das ist mehr als fahrlässig.



  • Singender Holzkübel schrieb:

    Skym0sh0 schrieb:

    Offensichtlich ist der OP noch nicht so erfahren, ihm dann aber Sauereien wie new/new[] anzubieten ist mehr als fahrlässig

    Speicherverwaltung in C++ ist fundamental. Einem C++ Anfänger zu raten irgendwelche Template-Klassen aus irgendwelchen Bibliotheken zu verwenden, und auf new/delete zu scheißen, das ist mehr als fahrlässig.

    Speicherverwaltung in C++ ist nicht fundamental.
    Speicherverwaltung in C++ ist etwas, was man nicht machen sollte.
    Speicherverwaltung in C++ ist fehlerhaft, unsicher, leak-anfällig, manuell, primitiv und anstrengend.
    Speicherverwaltung in C++ richtig hinzubekommen ist komplex und schwierig (wenn man es nicht gerade in RAII kapselt, wie - oh Wunder - std::vector).
    Speicherverwaltung in C++ sollte man keinem Anfänger machen lasssen.
    Speicherverwaltung in C++ sollte man Anfängern auch erst so spät wie möglich zeigen.



  • Nathan schrieb:

    Speicherverwaltung in C++ ist nicht fundamental.

    Allozierst du deinen Speicher etwa ausschließlich auf dem Stack?

    Nathan schrieb:

    Speicherverwaltung in C++ ist fehlerhaft, unsicher, leak-anfällig, manuell, primitiv und anstrengend.

    PEBKAC

    Nathan schrieb:

    Speicherverwaltung in C++ richtig hinzubekommen ist komplex und schwierig.

    Nein ist es nicht. Wenn man sich mit Scopes fließend auskennt ist das kein Problem.

    Nathan schrieb:

    Speicherverwaltung in C++ sollte man keinem Anfänger machen lasssen.
    Speicherverwaltung in C++ sollte man Anfängern auch erst so spät wie möglich zeigen.

    Wieso nicht? Wo liegt das Problem?



  • Mantras sind immer richtig, wusstest du das nicht? Murmel es solange vor dich hin, bis du es glaubst.



  • Singender Holzkübel schrieb:

    Nathan schrieb:

    Speicherverwaltung in C++ ist nicht fundamental.

    Allozierst du deinen Speicher etwa ausschließlich auf dem Stack?

    Nein, aber ich habe in meinem Code kein einziges new/new[]/delete/delete[] stehen.*

    *Bis auf mein selbstgebasteltes make_unique, aber das zählt nicht.

    Nathan schrieb:

    Speicherverwaltung in C++ ist fehlerhaft, unsicher, leak-anfällig, manuell, primitiv und anstrengend.

    PEBKAC

    Dann schreib mal bitte einen Code, der ein zweidimensionales Array von ints alloziert (ja, ich weiß, dass ist so nicht möglich, man braucht int* arr[]...), alle Elemente einlesen lässt und wieder ausgibt. Und ich sage dir, was daran falsch sein wird.

    Nathan schrieb:

    Speicherverwaltung in C++ richtig hinzubekommen ist komplex und schwierig.

    Nein ist es nicht. Wenn man sich mit Scopes fließend auskennt ist das kein Problem.

    Single entry single exit gilt nicht mehr in C++...

    Nathan schrieb:

    Speicherverwaltung in C++ sollte man keinem Anfänger machen lasssen.
    Speicherverwaltung in C++ sollte man Anfängern auch erst so spät wie möglich zeigen.

    Wieso nicht? Wo liegt das Problem?

    Es ist extrem kompliziert und schwierig das richtig hinzukriegen.



  • Nathan schrieb:

    Nathan schrieb:

    Speicherverwaltung in C++ sollte man keinem Anfänger machen lasssen.
    Speicherverwaltung in C++ sollte man Anfängern auch erst so spät wie möglich zeigen.

    Wieso nicht? Wo liegt das Problem?

    Es ist extrem kompliziert und schwierig das richtig hinzukriegen.

    Glaube ich nicht.



  • volkard schrieb:

    Nathan schrieb:

    Nathan schrieb:

    Speicherverwaltung in C++ sollte man keinem Anfänger machen lasssen.
    Speicherverwaltung in C++ sollte man Anfängern auch erst so spät wie möglich zeigen.

    Wieso nicht? Wo liegt das Problem?

    Es ist extrem kompliziert und schwierig das richtig hinzukriegen.

    Glaube ich nicht.

    Gut, falsche Adjektive.
    Es ist extrem mühselig und redunant.


  • Mod

    Also ich befolge: Zu jedem new gehört ein delete :

    auto p = new auto{784};
    
    delete p;
    

    Sogar wenn eine Exception im Konstruktor fliegt, räumt die Implementierung den allozierten Speicher weg.



  • Nathan schrieb:

    *Bis auf mein selbstgebasteltes make_unique, aber das zählt nicht.

    Selbst wenn du kein make_unique hättest, dann hättest du vllt ein paar new's/new[]'s, aber kein delete.

    Nathan schrieb:

    Nathan schrieb:

    Speicherverwaltung in C++ ist fehlerhaft, unsicher, leak-anfällig, manuell, primitiv und anstrengend.

    PEBKAC

    Dann schreib mal bitte einen Code, der ein zweidimensionales Array von ints alloziert (ja, ich weiß, dass ist so nicht möglich, man braucht int* arr[]...), alle Elemente einlesen lässt und wieder ausgibt. Und ich sage dir, was daran falsch sein wird.

    Und danach machst du das ganze auch mal für ein 3 dimensionales Array (keine Index Spielereien!)



  • Arcoth schrieb:

    Also ich befolge: Zu jedem new gehört ein delete :

    auto p = new auto{784};
    
    delete p;
    

    Sogar wenn eine Exception im Konstruktor fliegt, räumt die Implementierung den allozierten Speicher weg.

    Ich sagte in meinem Beispiel nicht ohne Grund mehrdimensional. :p
    Und jetzt tut bitte nicht alle so.



  • was gibt es hier überhaupt zu diskutieren? wer die vorteile von RAII nicht ausmerzen will ist bei C++ offensichtlich falsch.



  • 2D Array Source, schnell und hässlich.

    Nathan schrieb:

    Es ist extrem kompliziert und schwierig das richtig hinzukriegen.

    Desto sinnvoller es zu lernen.

    Skym0sh0 schrieb:

    Und danach machst du das ganze auch mal für ein 3 dimensionales Array (keine Index Spielereien!)

    Niemals werde ich meine Arrays ohne Index-Zauber indizieren!
    Generell gehören Menschen, die mehrdimensionale Arrays benutzen, an Ort und Stelle erschossen.

    ~Edit: Rechtschreibfehler~



  • Singender Holzkübel schrieb:

    2D Array Source, schnell und hässlich.

    ist ein 1d-array und ausserdem ist der code nicht exceptionsicher. hättest du bloss auf uns gehört... 🙄

    Singender Holzkübel schrieb:

    Nathan schrieb:

    Es ist extrem kompliziert und schwierig das richtig hinzukriegen.

    Desto sinnvoller es zu lernen.

    ich sehe den zusammenhang nicht zwischen der sinnigkeit etwas zu lernen und wie kompliziert es ist.



  • Singender Holzkübel schrieb:

    2D Array Source, schnell und hässlich.

    Was soll dieser Kot?
    Damit kannst du uns nur beweisen wie wenig Ahnung du von irgendwas hast.

    Wenn du meinst dass du so kuhl bist, dann poste etwas was es wenigstens wert ist dass wir uns die Sache mal genauer ansehen -- und dann auseinandernehmen.



  • asfdlol schrieb:

    Singender Holzkübel schrieb:

    2D Array Source, schnell und hässlich.

    ist ein 1d-array und ausserdem ist der code nicht exceptionsicher. hättest du bloss auf uns gehört... 🙄

    Der Sinn von Exceptions ist, dass man sie fangen kann.
    C++-syntaxisch ist es 1D. Mehrdimensionale Arrays sind Syntax Sugar.

    Nathan schrieb:

    Singender Holzkübel schrieb:

    Nathan schrieb:

    Es ist extrem kompliziert und schwierig das richtig hinzukriegen.

    Desto sinnvoller es zu lernen.

    ich sehe den zusammenhang nicht zwischen der sinnigkeit etwas zu lernen und wie kompliziert es ist.

    Ok, dann denk wohl nur ich so.



  • Singender Holzkübel schrieb:

    2D Array Source, schnell und hässlich.

    Und nicht exception safe.*
    Und jetzt bitte ohne Indexspielereien.

    *Ok, so wie es gezeigt ist vermutlich schon, da die Exceptionflags für cin/cout nicht aktiv sind. Aber es geht ums Prinzip.

    Nathan schrieb:

    Es ist extrem kompliziert und schwierig das richtig hinzukriegen.

    Desto sinnvoller es zu lernen.

    Ja, aber erst nachdem man die richtige Lösung (vector, unique_ptr) kennen gelernt hat.

    Skym0sh0 schrieb:

    Und danach machst du das ganze auch mal für ein 3 dimensionales Array (keine Index Spielereien!)

    Niemals werde ich meine Arrays ohne Index-Zauber indizieren!
    Generell gehören Menschen, die mehrdimensionale Arrays benutzen, an Ort und Stelle erschossen.

    Menschen, die RAII vernachlässigen, auch. :p
    Es geht hier ums Prinzip. Von mir aus auch ein Array aus std::string, dessen Inhalt du einlesen lässt.



  • hustbaer schrieb:

    Singender Holzkübel schrieb:

    2D Array Source, schnell und hässlich.

    Was soll dieser Kot?
    Damit kannst du uns nur beweisen wie wenig Ahnung du von irgendwas hast.

    Wenn du meinst dass du so kuhl bist, dann poste etwas was es wenigstens wert ist dass wir uns die Sache mal genauer ansehen -- und dann auseinandernehmen.

    You must be new to this thread.



  • Singender Holzkübel schrieb:

    asfdlol schrieb:

    Singender Holzkübel schrieb:

    2D Array Source, schnell und hässlich.

    ist ein 1d-array und ausserdem ist der code nicht exceptionsicher. hättest du bloss auf uns gehört... 🙄

    Der Sinn von Exceptions ist, dass man sie fangen kann.
    C++-syntaxisch ist es 1D. Mehrdimensionale Arrays sind Syntax Sugar.

    :D?????????????????

    bin ich hier der dumme wenn ich das nicht verstehe?



  • Hahahahahaha 😃

    xD

    Für die Eingaben w=1, h=1 und danach beliebige Zahlen kommt.... .... keine Ausgabe 😃


Anmelden zum Antworten