Struktur ohne Namen



  • pumuckl schrieb:

    general bacardi schrieb:

    Dummkopf schrieb:

    Meine gestellte Frage lautete aber anders. Ich frage mich, warum das überhaupt möglich ist.

    Ein C++ Parser müsste das akzeptieren auch wenn es Unsinn ist, weil Du nie ein objekt anlegen kannst

    Das ist schon eher Unsinn 😉

    Ich meinte so

    struct  // Hier steht nichts
    {
        int iWert;
    } /* Hier steht nichts */ ;
    

    Das lässt sich kompilieren aber ist sinnlos
    Warum es möglich ist? Weil es nicht gegen die Syntaxregeln von C++ verstößt
    Auch das

    int i = (1,2);
    

    ist sinnlos aber kompiliert. Ich meine die 1 vor dem Komma.



  • unskilled schrieb:

    gibts eigtl irgend nen weg namenlosen structs nen ctor zu geben?
    iwann hatte ich ma nen fall, wo das praktisch gewesen wäre ^^

    Nein, aber für sowas gibts die Aggregat-Initialisierungsliste aus dem guten alten C. 😉

    struct
    {
        int i;
        float f;
    } var = {2, 3.1415f};
    


  • Nexus schrieb:

    unskilled schrieb:

    gibts eigtl irgend nen weg namenlosen structs nen ctor zu geben?
    iwann hatte ich ma nen fall, wo das praktisch gewesen wäre ^^

    Nein, aber für sowas gibts die Aggregat-Initialisierungsliste aus dem guten alten C. 😉

    struct
    {
        int i;
        float f;
    } var = {2, 3.1415f};
    

    jopp - wollt ich aber nich nehmen - war ne größere klasse wo iwie iwas zusammengehangen hat, glaub ich - is scho wieder viel zu lang für mein nicht ganz perfektes gedächtnis her : D



  • passt sehr zum thema... jungs

    ich weis nicht, bin mir nicht sicher aber werden nicht unbekannte enums als konstanten quasi in klassen benutzt?
    für z.b. arrays
    oder in der meta programmierung?

    für sowas könnte man das doch auch verwenden



  • Skym0sh0 schrieb:

    ich weis nicht, bin mir nicht sicher aber werden nicht unbekannte enums als konstanten quasi in klassen benutzt?

    Ja, werden sie.



  • Kann man nun meine Struktur(s. erster Beitrag des Threads) verwenden? Wenn man diese nicht verwenden kann, warum ist es dann überhaupt möglich das zu kompilieren? 😕



  • Dummkopf schrieb:

    Kann man nun meine Struktur(s. erster Beitrag des Threads) verwenden? Wenn man diese nicht verwenden kann, warum ist es dann überhaupt möglich das zu kompilieren? 😕

    Ja, geht:

    struct A
    {
    	char* b;
    };
    
    int main()
    {
    	struct A a = {"a"};
    	cout << a.b;
    //...
    


  • Dummkopf schrieb:

    Kann man nun meine Struktur(s. erster Beitrag des Threads) verwenden? Wenn man diese nicht verwenden kann, warum ist es dann überhaupt möglich das zu kompilieren? 😕

    Warum ist es möglich, das zu kompilieren?!!

    int main()
    {
    	int i = 0;
    }
    

    Der Compiler muss einen ja nicht immer bevormunden (tut er oft genug).



  • @verwend0r: Du hast mich wohl falsch verstanden! Schau dir mal den ersten Beitrag von mir an. 🙄



  • Natürlich kannst du das Objekt verwenden???

    struct {
       int a;
    } a;
    
    a.a = 10;
    
    // Sinnlos:
    
    struct {
       char b;
    };
    


  • Wollt ihr den ersten Beitrag eigentlich nicht lesen? 🙄

    Dummkopf schrieb:

    struct
    {
    	int iWert;
    }/*hier steht nix!!!!111einseinself*/;
    

    Die Struktur hat weder einen Namen noch wird ein Objekt angelegt.



  • Dummkopf schrieb:

    Bringt das Vor- oder Nachteile mit sich?

    Nachteile, z.B: Du tippst dir nen Wolf, kannst aber nix damit anfangen.
    MFG



  • > Wollt ihr den ersten Beitrag eigentlich nicht lesen? 🙄

    Das kann ich eher dich fragen 🙄

    Und ich sage es gerne noch mal: Es ist sinnlos!



  • wollt ihr denn den beitrag nicht lesen? 🙄



  • Skym0sh0 schrieb:

    ich weis nicht, bin mir nicht sicher aber werden nicht unbekannte enums als konstanten quasi in klassen benutzt?
    für z.b. arrays
    oder in der meta programmierung?

    Ja, wobei hier auch integrale statische Konstanten funktionieren. Die sind mir persönlich auch lieber, enums verwende ich für Aufzählungen.

    Ad aCTa schrieb:

    Das kann ich eher dich fragen 🙄

    Naja, deine Antwort "Natürlich kannst du das Objekt verwenden???" war etwas missverständlich, zumal kein Objekt da war. Aber das sollte jetzt klar sein.



  • Ja - aber wie bereits gesagt wurde:
    Es ist syntaktisch korrekt...
    genau wie:

    int main()
    {
      ;;;;;;;;;;;;
    }
    

    es gibt halt viele leere anweisungen...
    warum sollte ein compiler da streiken? Oo

    bb


Anmelden zum Antworten