如何铸造C++;类转换为内部类型 基本C++类问题:

如何铸造C++;类转换为内部类型 基本C++类问题:,c++,casting,intrinsics,C++,Casting,Intrinsics,我现在有一些简单的代码,看起来像这样: typedef int sType; int array[100]; int test(sType s) { return array[ (int)s ]; } 我想要的是将“sType”转换为类,这样“returnarray[(int)s]”行就不需要更改。e、 g.(伪代码) 谢谢你的帮助 class sType { public: operator int() const { return val; }

我现在有一些简单的代码,看起来像这样:

typedef int sType;
int array[100];

int test(sType s)
{
  return array[ (int)s ];
}
我想要的是将“sType”转换为类,这样“returnarray[(int)s]”行就不需要更改。e、 g.(伪代码)

谢谢你的帮助

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时,它将使用该构造函数。

这是一个很好的私有方法,但您让他无法进行设置it@Rup:我假设OP知道构造函数是什么:)顺便说一下,C++0x允许将转换函数(
运算符int()
)标记为“显式”,以便强制转换
(int)s
是必需的。目前,您可以只编写
array[s]
,但有时不允许这样做,原因与有时您希望显式标记单个arg构造函数的原因相同。@Steve:很高兴知道。由于隐含的语义,我通常会避免使用转换函数。对于额外的分数,我如何确保“s=5;”有效?
class sType
{
public:
    operator int() const { return val; }

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

private:
    int val;
};