7

基本的な 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 ];
}    

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

4

2 に答える 2

10
class sType
{
public:
    operator int() const { return val; }

private:
    int val;
};
于 2010-12-17T11:10:59.277 に答える
5
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 に変換する必要があるときはいつでもそのコンストラクタを使用します。

于 2010-12-17T11:10:38.520 に答える