MainClass.h :C++ : 어떤 네임 스페이스에서 같은 클래스 이름을 가진 객체를 받아들이도록 함수를 얻는 방법?
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 클래스이 계승 클래스로 동작한다면 좋겠지 만, 그럴 수는 없다는 것을 알고 있습니다. 내가 이것을 재 작성하려고 시도할수록 각 사례에 대해 특정 클래스를 작성해야 할 때까지 나선형을 유지할 수 있습니다 (예에서 두 개 이상을가집니다). 그러나 코드는 모두 매우 비슷합니다.
는 또한 그냥 DoStuff (CONST의 INT의 p_val) 수를 외부 정적 캐스트를 할 ...하지만 그때 나는 모든해야 할 (CONST이 페이지 매개 변수) 대체 그냥 DoStuff을 허용하는 것입니다 알고 다른 곳에서는 정적 캐스팅을 사용하고 있으며 enum 클래스에 대한 좋은 typechecking을 얻지 못했습니다.
가능하지 않다면 괜찮습니다 ... 그렇다면 너무 나쁩니다.
모든 가능한 값을 가진 단일 열거 형을 가질 수는 없지만 런타임시 특정 값이 허용되는지 여부를 확인하고 예외를 throw하거나 값이 허용되지 않으면 오류를 반환 할 수 있습니까? –
'Alpha :: Parameters'와'Beta :: Parameters'는'Alpha_Parameters'와'Beta_Parameters'와 다르므로 네임 스페이스는이 이야기와 무관합니다. 어떤 열거 형이나 어떤 미리 정의 된 집합의 열거 형을 전달할 수 있기를 원할 수 있습니다. 두 경우 모두 더 쉬운 솔루션이 있습니다. 어쩌면 열거 형 작업에 대한 올바른 도구가 아닙니다. –