3

メソッドの引数をクラスに入れるのに問題があります。

class A {
  public:
    enum Mode {ModeA, ModeB, ModeC};

    ... // other methods, constructor etc

    void setMode(Mode m) {
      mMode = m;
    }

  private:
    Mode mMode;
}

int main(int argc, char **argv) {
  A a;
  a.setMode(A::ModeA | A::ModeC );

  return 0;
}

問題は、C++ コンパイラ エラーが発生invalid vconversion from int to A::Modeすることです。理解できません。列挙型の値に連結できないのはなぜですか? コードで値を連結する必要があるため、これを解決するための助けがあれば非常に便利です。

4

3 に答える 3

2

これが必要かもしれません:

a.setMode( (A::Mode) (A::ModeA | A::ModeC ));

A::ModeA | A::ModeCintそうA::Modeキャストする

于 2013-10-12T17:28:02.573 に答える