如何在方法enum state_t
中使用bar::install
的成员,而无需在foo
的公共类部分重新定义它?小组成员_state
必须留下protected
。
仅仅为成员使用具有类似名称的另一个枚举是一个好主意吗?
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;
}
}
答案 0 :(得分:3)
不,当你复制你的枚举时,你修改它们会付出额外的努力,你也会遇到与他们的类型相关的错误/警告。我会将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 };
};
答案 1 :(得分:0)
您可以将bar
定义为foo