c ++ - 从自定义类转换为内置类型

jim*_*iki 6 c++ casting

为了清楚起见,让我的新课程成为:

class MyInt{
    public: 
      MyInt(int x){theInt = x /10;} 
      int operator+(int x){return 10 * theInt + x;} 
    private 
      int theInt; 
};
Run Code Online (Sandbox Code Playgroud)

让我们说我希望能够定义:

MyInt Three(30); 
int thirty = Three; 
Run Code Online (Sandbox Code Playgroud)

但是为了得到这个结果,我写道:

MyInt Three(30); 
int thirty = Three + 0; 
Run Code Online (Sandbox Code Playgroud)

如何从我的Custom类自动转换为内置类型?

jro*_*rok 14

具有类型转换功能:

class MyInt{
    public: 
      MyInt(int x){theInt = x /10;} 
      int operator+(int x){return 10 * theInt + x;} 

      operator int() const { return theInt; } // <--

    private 
      int theInt; 
};
Run Code Online (Sandbox Code Playgroud)

  • 补充说明这样做应该是透明的.也就是说,如果要转换为`int`,则该类应该是一个数字类,而不是一些完全不相关的自定义类. (4认同)
  • 它应该是`const`(但是`operator +`,如果不是非成员函数),并且应该根据OP的怪异性返回`10*theInt`. (3认同)
  • @gx_ 谢谢,我同意 const。我会让 OP 做算术 :) (2认同)