Suivi sur une réponse de la nuit dernière - j'espérais que plus de commentaires répondraient pour moi mais pas de dés.typedef pour enum à partir de la classe
Existe-t-il un moyen d'y parvenir sans héritage qui ne nécessite pas l'utilisation fastidieuse dans l'avant-dernière ligne de code ci-dessous, qui écrit la valeur à cout
?
struct A {
enum E {
X, Y, Z
};
};
template <class T>
struct B {
typedef typename T::E E;
};
// basically "import" the A::E enum into B.
int main(void)
{
std::cout << B<A>::E::X << std::endl;
return 0;
}
oui c'est Microsoft C++ dans VS2010, ajouté ce tag au q –
lorsque je fais le changement suggéré, la ligne 'cout' ne compile pas. erreur C2039: 'X': n'est pas membre du 'B' avec [ T = A ] –
@ Steve: non, il devrait fonctionner avec l'utilisation originale (juste un changement du typedef). Si vous voulez que les valeurs 'X' soient directement disponibles sans qualification, vous devrez les hériter. Comme dans la réponse de Steve. Mais je pense qu'à la fin vous ne voudriez pas faire ça. "A la fin" → peut-être des années à venir ... ;-) Salutations & hth. –