Je reçois une erreur avec un programme. Évidemment, il me manque quelque chose à propos de la syntaxe. L'extrait de code C++ ci-dessous est le plus petit qui génère l'erreur.Syntaxe d'accès à Enum à partir de la classe parente
#include <iostream>
using namespace std;
class Parent
{
public:
enum MyEnum {
Value1,
Value2,
Value3
};
MyEnum* set;
};
class Child: public Parent
{
public:
Child()
{
set = new MyEnum[5];
set[0]=MyEnum.Value1;//<--Something wrong here
set[1]=MyEnum.Value2;//<--Something wrong here
set[2]=MyEnum.Value3;//<--Something wrong here
set[3]=MyEnum.Value2;//<--Something wrong here
set[4]=MyEnum.Value1;//<--Something wrong here
}
void Write()
{
for(int i=0;i<5;i++)
{
cout<< "This is " << i << ": " << set[i];
}
}
};
int main() {
Child c;
c.Write();
return 0;
}
L'erreur a quelque chose à voir avec la syntaxe indiquée.
expected primary-expression before ‘.’ token
J'ai essayé Parent.MyEnum.Value1, Parent :: MyEnum.Value1, etc. rien ne semble avoir raison. Comment devrais-je faire référence aux valeurs spécifiques dans la classe parente?
'MyEnum.Value1; // <- Quelque chose ne va pas ici' - La syntaxe. C'est juste "Value1" si vous avez une énumération régulière. [Choisissez un bon livre] (https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list), il vous le dira et plus encore. – StoryTeller
Qu'en est-il des gens qu'ils aiment supposer que quelqu'un est un novice ou mal lu parce qu'ils ont une question. Comme je n'ai pas trois livres en C++ à portée de main. Merci pour ça. Pour en revenir à la question, POURQUOI cette syntaxe est-elle acceptable? Et qu'est-ce qu'un "enum" régulier? Existe-t-il un autre type d'énumération? – BSD
Quoi, vos 3 livres ne vous ont pas parlé d'énumérations étendues et non délimitées? – StoryTeller