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)だけにして、外部で静的キャストを行うことを許可することも知っています...しかし、他の場所ですべての静的キャストを行う必要があり、私はしません'列挙型クラスの適切な型チェックを取得できません。
それが出来ないならそれでいいのですが…出来なかったら残念です。