Dans un en-tête, j'ai une configuration comme celui-ciAccès à un espace de noms ENUM dans un
namespace NS {
typedef enum { GOOD, BAD, UGLY }enum_thing;
class Thing {
void thing(enum_thing elem);
}
}
et bien sûr un autre fichier cpp qui va de pair avec cet en-tête. Ensuite, j'ai un fichier cpp thread qui contient main(). Dans ce fichier cpp j'utilise cette enum pour passer à la méthode thing().
using namespace NS;
int main() {
Thing t();
t.thing(BAD);
}
et bien sûr je reçois d'autres erreurs de G ++ disant BAD n'a pas été déclaré. Toute aide sur comment je pourrais surmonter cette erreur?
il devrait être 'Chose t,' pas 'Chose t()' – smerlin
un 'public:' manque avant que la méthode et un ',' qui manque à la fin de la déclaration de classe, après la clôture '}' . – jdehaan
Et si vous qualifiez complètement l'enum: 'NS :: BAD'. Le compilateur plus ancien n'aime pas ça. typedefing en C++ n'est pas nécessaire dans de tels cas. Ici un enum anonyme est typedef'ed. – jdehaan