Problem(chen) mit | Verknüpfen



  • Ähm ich hab dan problemchen

    und zwar:
    wenn ich als parameter zwei parameter mit | verknüpf und dann mit & schauen will obs verknüpft ist meckert der compiler
    vieleicht sagt der code mehr

    ...
    enum Mode
    {
        fett=1,
        kursiv=2,
        unterstrichen=4
    };
    
    void foo(int i,Mode m)
    {
        for(int u=i;u>0;u--)
        {
            if(m&fett)
                cout<<"Fett"<<endl;
            if(m&kursiv)
                cout<<"Kursiv"<<endl;
            if(m&unterstrichen)
                cout<<"Unterstrichen"<<endl;
        }
    }
    
    int main()
    {
        foo(5,fett|unterstrichen);
        return(0);
    }
    ...
    

    Der Compiler behaupet dass er Parameter 2 nicht von 'int' nach 'Mode' konvertieren kann

    Brauch dringend HILFE!!! 😞



  • Du musst den Wert explizit konvertieren:

    foo(5, static_cast<Mode>(fett | unterstrichen);
    // oder als function-style cast:
    foo(5, Mode(fett | unterstrichen);
    


  • Schön funktioniert! 🙂 👍

    Aber warum funktioniert das dann ohne explizit zu konvertieren bei zum Beispiel bei fstream::open 😕



  • nimm doch sofort int als parameter

    void foo(int i,int m);
    


  • anon schrieb:

    nimm doch sofort int als parameter

    void foo(int i,int m);
    

    Genau, strenge Typisierung ist für Loser.


Anmelden zum Antworten