Question

La question de classe de base C:

Je simple code actuellement qui ressemble à quelque chose comme ceci:

typedef int sType;
int array[100];

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

Ce que je veux, est de convertir « sType » à une classe, de sorte que la ligne « return array [(int) s] » n'a pas besoin d'être changé. par exemple. (Pseudocode)

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


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

Merci pour toute aide.

Était-ce utile?

La solution

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

private:
    int val;
};

Autres conseils

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

Pour le travail de make = 5, fournir un constructeur qui prend un int:

class sType
{
  public:

    sType (int n ) : val( n ) {
    }

    operator int() const
    {
      return val;
    }
    int val;
};

Le compilateur utilisera alors que le constructeur à chaque fois qu'il a besoin de convertir un sType à un int.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top