重新定义公共/私人接口的枚举

问题描述:

如何在方法bar::install中使用enum state_t的成员,而无需在foo的公共类部分重新定义?类成员_state必须保持protected重新定义公共/私人接口的枚举

这是个好主意,只是使用与成员similiar姓名另一个枚举?

class foo 
{ 
protected: 
    int   _bla 
    volatile enum state_t { _REC, _LIN, _OFF } _state; 
public 
    volatile enum { REC, LIN, OFF }; 
    state_t get_state(void) { return _state }; 
}; 

在另一个类的方法:

void bar::install(foo *ptr) 
{ 
    switch(ptr->get_state()) { 
     case foo::REC: break; 
     case foo::LIN: break; 
     case foo::OFF: break; 
    } 
} 

没有,当你重复你的枚举你受苦了额外的努力,当你修改它们,你也将运行到与他们的类型的错误/警告。我会使state_t公开并保留_state分开它们的定义,如下所示:

class foo 
{ 
public: 
    enum state_t { REC, LIN, OFF }; 
protected: 
    int   _bla 
    volatile state_t _state; 
public: 
    state_t get_state(void) { return _state }; 
}; 
+0

Thx!我应该知道这个简单的解决方案... – arge

您可以定义bar为友元类的foo