Konstante in Klasse als static?


  • Administrator

    Zoom schrieb:

    warum sollte das schlecht sein?

    #define IchBinEineKonstante 5
    
    class IchBinEineKonstante
    {
    };
    
    int main()
    {
    	IchBinEineKonstante test;
    
    	return 0;
    }
    

    ... WOOOOOOPPSSSS ...

    Das ist nur ein dummes Beispiel. Aber ich ärgere mich jedes Mal zu Tode bei sowas:

    #include <windows.h>
    #include <limits>
    
    int main()
    {
      std::numeric_limits<int>::max(); // <- BUMM
    
      // Bringt sie um! Wer hatte die bescheuerte Idee statt eine Funktion zu verwenden,
      // ein Makro max zu erstellen!!!
    }
    

    Grüssli



  • ich habe ein wenig getrolle gelöscht. 😃



  • volkard schrieb:

    ich habe ein wenig getrolle gelöscht. 😃

    wie meinst du das? was habe ich falsch gemacht?



  • Meine Güte, Zoom, stelle dich nicht so an.

    Wenn du weisst, was ein Präprozessor-Makro ist und worin der Unterschied zu Compilezeit-Konstanten besteht, sollte dir bereits alles klar sein. Argumente wie " #define s brauchen keinen Speicher" sind wirklich nichts wert, wenn du einen modernen Compiler verwendest. Wie gesagt sollte allein schon der Scope Grund genug für Compilezeit-Konstanten sein. Ausserdem gibt es dafür Debugging-Symbole, man hat einen feststehenden Typen und muss nicht furchtbar aufpassen, dass die Textersetzung aufgrund fehlender Klammern oder Ähnlichem falsch durchgeführt wird.



  • Zoom schrieb:

    volkard schrieb:

    ich habe ein wenig getrolle gelöscht. 😃

    wie meinst du das?

    na, du bist uneinsichtig, gehst auf argumente nicht ein.
    und machst den eindruck, dein wissen bezüglich c++ seit den letzten 18 jahren nicht mehr aktualisiert zu haben, und weil schon damals enum{std_val=5 die bessere alternative war, es damals schon nicht beherrscht zu haben.
    also hab ich ein wenig gebremst und werde das natürlich weiter tun.



  • volkard schrieb:

    Zoom schrieb:

    volkard schrieb:

    ich habe ein wenig getrolle gelöscht. 😃

    wie meinst du das?

    na, du bist uneinsichtig...

    es tut mir leid. natürlich habe ich mich nur getäuscht. ich wollte dich nicht kränken.



  • Nexus schrieb:

    Meine Güte, Zoom, stelle dich nicht so an.

    ok, ja, ihr habt recht und ich nehme alles zurück. bitte entschuldigt, es wird nicht wieder vorkommen.


  • Administrator

    Ich will noch einen letzten Versuch tätigen. Bei gewissen Leuten braucht es womöglich einfach ein wenig länger, um das Offensichtliche zu erkennen.

    Sagen wir, es gibt einen Bibliothekenentwickler. Der braucht Konstanten, um die Schriftart zu kennzeichnen. Er will eine Konstante für fette Schrift, dazu muss einer Funktion der Wert 2 übergeben werden. Er hört auf dich und verwendet deine Methode:
    SuperDuperZoomLib.hpp

    #define BOLD 2
    

    Ich bin nun der Käufer dieser Bibliothek. Ich verwende Teile aus der Bibliothek, möchte aber ein paar Dinge anders oder selbst schreiben. Ich will auch fette Schrift. Ich nehme aber die C++ Variante, nämlich ein enum .
    SuperDuperDravereProgram.hpp

    #include "SuperDuperZoomLib.hpp"
    
    class Font
    {
    public:
      enum Style
      {
        // ...
        BOLD,
        // ...
      }
    };
    

    Ich werde nun mit Sicherheit den Ersteller der SuperDuperZoomLib verfluchen!

    Wenn du hier immer noch nicht begreifst, worum es geht. Dann tut es mir Leid, aber dann hast du noch nie mit C++ entwickelt, bist ein C++ Neuling, bist zu dumm dies zu erkennen oder einfach nur ein Troll.
    Das sind vielleicht alles Beleidigungen, aber ... mir fehlen die Worte ... das kann man nicht mehr in Worte fassen. Dann bildet sich bei mir ein neues blankes Entsetzen darüber, wie dumm die Menschen tatsächlich sein können.

    Grüssli



  • Dravere schrieb:

    Sagen wir, es gibt einen Bibliothekenentwickler.

    Du sprichst nicht zufällig von einem gewissen Softwarehersteller aus dem Nordwesten der USA?



  • Bashar schrieb:

    Dravere schrieb:

    Sagen wir, es gibt einen Bibliothekenentwickler.

    Du sprichst nicht zufällig von einem gewissen Softwarehersteller aus dem Nordwesten der USA?

    lol 👍 😃

    Gruss
    Cartman


Anmelden zum Antworten