J'ai une classe, nous allons l'appeler A. Il a une ENUM (E) et une méthode Foo (E e), avec E obtient dans les arguments. Je veux écrire un wrapper (décorateur) W pour A. Donc ça va avoir sa propre méthode Foo (A :: E). Mais je veux avoir une sorte d'encapsulation, donc cette méthode devrait être définie comme Foo (F f), où F est une autre enum définie dans W, qui peut être convertie en A :: E. Par exemple:Enum problème "copie"
class A
{
public:
enum E { ONE, TWO, THREE };
void Foo(E e);
};
class B
{
//enum F; // ???
void Foo(F f)
{
a_.Foo(f);
}
private:
A a_;
};
Comment F doit être défini? Je ne veux pas copier la valeur comme ceci:
enum F { ONE = A::ONE, TWO = A::TWO, THREE = A::THREE };
parce que son erreur potentielle dans la fonction proche. La définition de typedef:
typedef A::E F;
est la meilleure décision? Est-ce légal?
Le typedef va utiliser essentiellement A :: E l'intérieur B. Je suppose que la question est évidente: pourquoi ne vous voulez utiliser A :: E dans les deux classes, c'est déclarer B :: Foo (A: : E f)? – andand