static_cast-verhalten



  • hi

    wie verhält sich static_cast bei eigenen klassen?

    class myfloat
    {
      float f;
    public:
      operator float&();
      operator const float() const; //ist hier das erste const nötig? kann der compiler dann immer noch unterscheiden?
    }
    float f = static_cast<float>(myfloat); //wir hier ein fehler ausgegeben oder den konvertierungsoperator aufgerufen? ich weiss, der cast wäre nicht nötig, er ist nur ein beispiel
    

    mfg



  • Wieso hast du es nicht einfach mal ausprobiert?

    Also

    class Myfloat
    {
      float f;
    public:
      operator float() const { return 0.0; }
    };
    
    int main()
    {
      Myfloat myfloat;
      float f = static_cast<float>( myfloat );
      return 0;
    }
    

    funktioniert.

    Das erste const bei dir in Zeile 6 ist nicht unbedingt nötig, weil du ja per value returnst und deshalb dein member dadurch eh nicht verändert werden kann. Allerdings kann man auch per value returnte Sachen const machen, macht man aber gewöhnlich nicht beim build-in types (http://www.gotw.ca/gotw/006.htm).


Anmelden zum Antworten