是否有可能編寫一個(內聯?)C++函數,在那裏我們接受一個枚舉作爲輸入並返回一個可以在模板聲明中使用的類類型?C++函數,接受枚舉並返回一個typedef類類型用於模板?
我的直覺是,由於枚舉類型的數量有限,應該有可能嗎?
enum MyEnumType { A, B, C };
class MyClassA { };
class MyCLassB { };
class MyClassB { };
template class<T>
class ATemplatedClass {
// ...
};
NotSureWhatReturnType ConvertEnumToClassType(MyEnumType type) {
switch (type) {
case A: return MyClassA;
case B: return MyClassB;
case C: return MyClassC:
default: throw;
}
}
MyEnumType type = GottenSomewhere();
auto class_type = ConvertEnumToClassType(type);
ATemplatedClass<class_type> is_this_possible;
也許你想看看多態的類層次結構和工廠? –
您應該解釋您想解決的**真實**問題,而不是預期的解決方案。你所問的問題不能直接完成,但還有其他的東西可能適合這個問題(例如,從枚舉映射到一個類型的特徵) –