C++, class with method and enum type - can method and enum value have same names? -


i have following class:

class washm_t  { public:     enum door_t { closed = 0, open = 1 }; private:     door_t door_state ; public:     int open() ; }; 

the problem class open name defined both name of method inside of class , value of enum type.

the question is: can somehow modify code both open names work inside of class or should pick other name open() method or open enum type value?

this how open() function looks like:

int washm_t::open() {     if(door_state == open)          // ~fails, 'open' interpreted name of method                                             //  not name of enum type value         return 1 ;     else         return door_state = open, 0 ; } 

in c++11 can use enum class:

enum class door_t { closed = 0, open = 1 }; 

but have refer door_t::open instead of open. has advantages , disadvantages of verboseness. enum class in these cases name conflict likely, , adds generic prefix enumerators of enumeration.

(actually, in c++11 don't need use class keyword. referring door_t::open resolves conflict no other change.)

you can arrive @ similar solution in c++03 putting enum inside class (hence syntax of c++11 feature)

struct door_state {     enum door_t { closed = 0, open = 1 }; }; 

you can make nested class, or define before washm_t , use base class

class washm_t : public door_state {     int open(); }; 

now the member open() overrides enumerator, enumerator still available door_state::open, , closed still available using same syntax before.


Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -