如何铸造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;
};