pow() - C2668



  • userall.usergroup[gruppenid].sicherheitsstufe%(int)(pow(2,16))  > (pow(2,15)-1)?messprog_Check->setChecked(TRUE):options_Check->setChecked(FALSE);
    

    bringt folgenden Fehler

    Fehler	9 error C2668: 'pow': Mehrdeutiger Aufruf einer überladenen Funktion
    

    jedoch nur im 2008 compiler . Im 2002 geht es.



  • rubooo schrieb:

    userall.usergroup[gruppenid].sicherheitsstufe%(int)(pow(2,16))  > (pow(2,15)-1)?messprog_Check->setChecked(TRUE):options_Check->setChecked(FALSE);
    

    bringt folgenden Fehler

    Fehler	9 error C2668: 'pow': Mehrdeutiger Aufruf einer überladenen Funktion
    

    jedoch nur im 2008 compiler . Im 2002 geht es.

    Welches sind denn die Kanditaten? Also welche Überladungen kommen in Frage? Vielleicht kann man mit wenigen Handgriffen den COmpiler dazu überreden, genau das zu machen, was Du suchst.
    Sind die Kandidaten schon in der Fehlermeldung gelistet? Ansonsten rechte MauTa auf pow und Deklarationen suchen.

    Abgesehen davon wolltest Du eh sowas ähnliches schreibseln wie

    if(userall.usergroup[gruppenid].sicherheitsstufe&(1<<15) )
      messprog_Check->setChecked(TRUE);
    else
      options_Check->setChecked(FALSE);
    

    , wobei ich sogar das Bitgefummle in passende Funktionen auslagern würde.



  • Danke für die schnelle Antwort..
    ich versteh aber leider nur Bahnhof.
    Hab zwar in den Deklarationen gesucht aber das hat mich auch nicht weiter gebracht.

    Hier ein Bild von den Deklarationen
    http://img266.imageshack.us/img266/7904/powe.jpg

    *EDIT : Beim Schreiben dieser Zeilen ist mir dann klar geworden, dass ich vllt einfach mal das probieren sollte:

    userall.usergroup[gruppenid].sicherheitsstufe%(int)(pow(2.,16.))  > (pow(2.,15.)-1)?messprog_Check->setChecked(TRUE):options_Check->setChecked(FALSE);
    

    Und siehe da es geht!^^
    DANKE*



  • rubooo schrieb:

    Hier ein Bild von den Deklarationen
    http://img266.imageshack.us/img266/7904/powe.jpg

    Supi! Das ist hilfreich.
    Es gibt da eine Überladung, die ohne Fließkommazahlen auskommt. Die wäre angemessen. Die mizt long und long.
    pow(2,16)
    sucht nämlich nach einer Überladung mit int und int. Und die gibt es nicht. Und der compiler kann sich nicht entscheiden, welche der anderen am besten wäre.
    pow(2l,16l)
    oder
    pow(long(2),long(16))
    oder
    pow((long)2,(long)16)
    sollte das Problem beheben.

    Da steht +1 overloads. Das ist schade. Da wird wohl eine nicht angezeigt.
    Wenn Du pow tippst, geht so eine box auf, wo Du aussuchen kannste, welche pow genau, da kannst Du scrollen. Wie heißt denn die sechste Überladung? Nur so aus Neugier.



  • danke :)!

    die 6te:

    long double pow(long double _X, int _Y);
    

    offtopic: vielleicht kannst mir hier auch schnell helfen 😉 ?!
    http://www.c-plusplus.net/forum/viewtopic-var-p-is-1939051.html#1939051


Anmelden zum Antworten