GCC weigert sich



  • struct test {
        char foo () { return 0; }
    
        enum {value= sizeof(foo())};
    };
    
    int main(int argc, char *argv[])
    {
        cout << test::value << nl;
    }
    

    wenn die funktion test::foo global ist, gibt's keine Probleme! Wieso ?
    die fehlermeldungen sind:

    Führt make... aus

    g++.exe -c main.cpp -o main.o -I"C:/Dev-Cpp/include/c++" -I"C:/Dev-Cpp/include" main.cpp:15: invalid use of undefined type struct test' main.cpp:9: forward declaration ofstruct test'
    main.cpp:15: enumerator value for `value' not integer constant

    Zeile neun ist die Zeile
    struct test {

    Zeile 15:
    enum {value=sizeof(foo())};



  • struct test {
        struct inner {
          static char foo () { return 0; }
        };        
        enum {value= sizeof(inner::foo())};
    };
    int main(int argc, char *argv[])
    {
        cout << test::value << nl;
    }
    


  • danke 😉 😉 😉 😉


Anmelden zum Antworten