質問

基本的なC ++クラスの質問:

私は現在、このようなもののような単純なコードを持っています:

typedef int sType;
int array[100];

int test(sType s)
{
  return array[ (int)s ];
}

私が望んでいるのは、「Stype」をクラスに変換することです。そのため、「return array [(int)]」行を変更する必要はありません。 EG(pseudocode)

class sType
{
  public:
    int castInt()
    {
      return val;
    }
    int val;
}


int array[100];    
int test(sType s)
{
  return array[ (int)s ];
}    

助けてくれてありがとう。

役に立ちましたか?

解決

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;
};

その後、コンパイラは、スタイプをINTに変換する必要があるときはいつでもそのコンストラクターを使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top