Basic C++ class question:
I have simple code currently that looks like something like this:
typedef int sType;
int a开发者_运维知识库rray[100];
int test(sType s)
{
return array[ (int)s ];
}
What I want, is to convert "sType" to a class, such that the "return array[ (int)s ]" line does not need to be changed. e.g. (pseudocode)
class sType
{
public:
int castInt()
{
return val;
}
int val;
}
int array[100];
int test(sType s)
{
return array[ (int)s ];
}
Thanks for any help.
class sType
{
public:
operator int() const { return val; }
private:
int val;
};
class sType
{
public:
operator int() const
{
return val;
}
int val;
};
To make s = 5 work, provide a constructor that takes an int:
class sType
{
public:
sType (int n ) : val( n ) {
}
operator int() const
{
return val;
}
int val;
};
The compiler will then use that constructor whenever it need to convert an sType to an int.
精彩评论