How cast C++ class to intrinsic type
-
11-10-2019 - |
Question
Basic C++ class question:
I have simple code currently that looks like something like this:
typedef int sType;
int array[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.
Solution
class sType
{
public:
operator int() const { return val; }
private:
int val;
};
OTHER TIPS
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.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow