2

のパブリッククラスセクションで再定義せずenum state_tに、メソッドでのメンバーを使用するにはどうすればよいですか?クラスのメンバーは滞在する必要があります。bar::installfoo_stateprotected

メンバーに同じ名前の別の列挙型を使用するのは良い考えですか?

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 に答える