2

如何使用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;
    }
}
4

2 回答 2

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 };
};
于 2012-10-24T13:31:19.753 回答
0

您可以定义bar为朋友类foo

于 2012-10-24T13:29:56.840 回答