Das verwirrende char in C/C++



  • Simon2 schrieb:

    Sorry, aber ist das nicht die klassische "Funktionsdeklarationsfalle"?

    Nö.



  • Bashar schrieb:

    Simon2 schrieb:

    Sorry, aber ist das nicht die klassische "Funktionsdeklarationsfalle"?

    Nö.

    hmmm - der g++ spuckt bei

    struct array {
       int elemente[10];
    };
    
    int main() {
       array quelle();
       quelle.elemente[0] = 0;
       return 0;
    }
    

    raus:

    # g++ delme.cpp
    delme.cpp: In function 'int main()':
    delme.cpp:7: error: request for member 'elemente' in 'quelle', which is of non-class type 'array ()()'
    

    Ohne "()" dagegen klappt's wie gewünscht.
    ... sieht mir doch danach aus....

    Gruß,

    Simon2.



  • Die Falle hast du dir aber absichtlich selbst gebaut. Versuchs mal mit quelle().elemente[0] . quelle ist eine Funktion, und soll auch eine Funktion sein.



  • Bashar schrieb:

    ...und soll auch eine Funktion sein.

    AHA!!! 💡 👍 🕶
    Genau DA lag mein Mißverständnis!!
    Ich hatte krümelkackers Sourcecode und dessen Intention falsch verstanden:

    krümelkacker schrieb:

    ...

    struct array {
      int elemente[10];
    };
    
    array quelle();
    void senke(array);
    

    Ich hatte gedacht, es ginge ihm nur darum, eine Variable (namens " quelle ") zu definieren, die dann als Parameter an senke übergeben werden sollte.
    Aber es ging ihm wirklich um zwei Funktionen (hätte ich aufgrund des Namens auch sehen können)...
    So - damit erscheint auch Anderes noch sinnvoller!

    Danke,

    Simon2.


Anmelden zum Antworten