代码之家  ›  专栏  ›  技术社区  ›  Carl

关于C中赋值运算符的问题++

  •  1
  • Carl  · 技术社区  · 17 年前

    struct fraction {
        fraction( size_t num, size_t denom ) : 
            numerator( num ), denominator( denom )
        {};
        size_t numerator;
        size_t denominator;
    };
    

    fraction f(3,5);
    ...
    double v = f; 
    

    v

    5 回复  |  直到 17 年前
        1
  •  7
  •   1800 INFORMATION    17 年前

    struct fraction
    {
      size_t numerator;
      size_t denominator;
    
      operator float() const
      {
         return ((float)numerator)/denominator;
      }
    };
    

    struct fraction
    {
      size_t numerator;
      size_t denominator;
    
      float as_float() const
      {
         return ((float)numerator)/denominator;
      }
    };
    

    as_float

        2
  •  3
  •   sharptooth    17 年前

    struct fraction {
         //other members here...
         operator double() const { return (double)numerator / denominator;}
         //other members here...
    };
    
        3
  •  2
  •   aJ.    17 年前

    您可以使用double运算符进行转换:

    struct fraction
    {
         operator double() const
          {
             //remember to check for  denominator to 0
              return (double)numerator/denominator;
          }
    };
    
        4
  •  1
  •   Alex Martelli    17 年前

    operator= struct 公众 operator double

    operator double() {
      return ((double) numerator))/denominator;
    }
    
        5
  •  0
  •   Naveen    17 年前

    operator double() 编译器将使用它进行此转换。