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

时间:2010-12-17 11:08:28

标签: c++ casting intrinsics

基础C ++课程问题:

我目前的代码简单,如下所示:

typedef int sType;
int array[100];

int test(sType s)
{
  return array[ (int)s ];
}

我想要的是将“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 ];
}    

感谢您的帮助。

2 个答案:

答案 0 :(得分:8)

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

private:
    int val;
};

答案 1 :(得分:5)

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

要使s = 5工作,请提供一个带有int:

的构造函数
class sType
{
  public:

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

    operator int() const
    {
      return val;
    }
    int val;
};

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