Как привести класс 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; }

private:
    int val;
};

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.