Как привести класс C++ к встроенному типу
основной вопрос класса 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 ];
}
Спасибо за любую помощь.
2 ответов
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.