基础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 ];
}
感谢您的帮助。
答案 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,编译器就会使用该构造函数。