开发者

How cast C++ class to intrinsic type

开发者 https://www.devze.com 2023-01-30 21:38 出处:网络
Basic C++ class question: I have simple code currently that looks like something like this: typedef int sType;

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消