如何将C++类转换为内部类型

Sam*_*Sam 6 c++ casting intrinsics

基本的C++类问题:

我目前有简单的代码,看起来像这样:

typedef int sType;
int array[100];

int test(sType s)
{
  return array[ (int)s ];
}
Run Code Online (Sandbox Code Playgroud)

我想要的是将"sType"转换为类,这样就不需要改变"return array [(int)s]"行.例如(伪代码)

class sType
{
  public:
    int castInt()
    {
      return val;
    }
    int val;
}


int array[100];    
int test(sType s)
{
  return array[ (int)s ];
}    
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

Ale*_* C. 8

class sType
{
public:
    operator int() const { return val; }

private:
    int val;
};
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一句,C++ 0x允许转换函数(`operator int()`)标记为"explicit",因此需要强制转换`(int)s`.就目前而言,你可以只编写`array [s]`,但有时候不允许这样做,因为有时你想要将单arg构造函数标记为显式. (6认同)
  • 与私人用户的好主意,但您没有让他设置的方法 (2认同)
  • @Rup:我假设OP知道什么是构造函数:) (2认同)

unq*_*ind 5

class sType
{
  public:
    operator int() const
    {
      return val;
    }
    int val;
};
Run Code Online (Sandbox Code Playgroud)

要使s = 5工作,请提供一个带int的构造函数:

class sType
{
  public:

    sType (int n ) : val( n ) {
    }

    operator int() const
    {
      return val;
    }
    int val;
};
Run Code Online (Sandbox Code Playgroud)

然后,只要需要将sType转换为int,编译器就会使用该构造函数.