0

MainClass.h:

namespace Alpha{ enum class Parameters; }
namespace Beta { enum class Parameters; }
MainClass{
public:
  enum class Type{ Type_A, Type_B };
  MainClass(const Type t);

  void DoStuff(const Parameters p);
private:
  void doesStuff(const int p_val);
};

MainClass.cpp:

/* define values for Alpha::Parameters, Beta::Parameters here or elsewhere, and included */
MainClass::MainClass(const Type t){
  /* not sure how to do this. But essentially by switching based on 't' use either Alpha::Parameters or Beta::Parameters */
}

MainClass::DoStuff(const Parameters p){
  int p_value = static_cast<int>(p);
  doesStuff(p_value);
}

それが私ができるようになりたいことです。これは可能ですか?現実的には、 enum クラスが継承のあるクラスのように振る舞えばいいのですが、それができないことはわかっています。これを書き直そうとすればするほど、実際にはケースごとに特定のクラスを作成しなければならなくなるまで、スパイラルが続きます (この例では 2 つだけではありません)。しかし、コードはすべて非常に似ています。

また、代わりにDoStuff(const Parameters p)DoStuff(const int p_val)だけにして、外部で静的キャストを行うことを許可することも知っています...しかし、他の場所ですべての静的キャストを行う必要があり、私はしません'列挙型クラスの適切な型チェックを取得できません。

それが出来ないならそれでいいのですが…出来なかったら残念です。

4

2 に答える 2