2010-10-24 12 views
3

Je ne comprends pas un problème:Utilisation énumérations

Types.hpp:

enum SomeEnum { one, two, three }; 

First.hpp:

#include "Types.hpp" 
class First 
{ 
    public: void someFunc(SomeEnum type) { /* ... */ } 
}; 

Second.hpp:

#include "Types.hpp" 
#include "First.hpp" 
class Second 
{ 
    public: void Foo() 
    { 
     First obj; 
     obj.someFunc(two); // two is from SomeEnum 
    } 
}; 

erreur toi:

no matching function for call to ‘First::someFunc(SomeEnum)’ 
note: candidate is: void First::someFunc(First::SomeEnum) 
+0

Vous avez des fichiers .cpp manquants? De votre liste je ne vois pas l'implémentation réelle de l'appel 'First :: someFunc'. – wheaties

+0

Non reproductible. Qu'est-ce que 'EnvironTypes'? – kennytm

+0

que fait le compilateur? –

Répondre

2

Je pense que vous venez de changer que:

no matching function for call to ‘First::someFunc(SomeEnum)’ 
note: candidate is: void First::someFunc(First::SomeEnum) 

était pas:

no matching function for call to ‘First::someFunc(SomeEnum)’ 
note: candidate is: bool First::someFunc(First::SomeEnum) 

Quoi qu'il en soit, cela change les choses. L'énumération est-elle déclarée à l'intérieur class First? Si oui, ou si vous ne savez pas, essayez simplement d'appeler la fonction, puttung First:: devant la ENUM:

obj.someFunc(First::two); // two is from SomeEnum 
       ^^^^^^^ 
1

Je pourrais bt tout à fait tort dans l'interprétation de l'erreur de complier mais

note: candidate is: void First::someFunc(First::SomeEnum) 

Me laisse croire que vous avez déclaré SomeEnum dans la définition de First

class First 
{ 
    SomeEnum {one, two, three}; 
}