重新定义公共/私人接口的枚举
问题描述:
如何在方法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 };
};
答
您可以定义bar
为友元类的foo
Thx!我应该知道这个简单的解决方案... – arge