Angenommen, ich Code wie diese:Erhalten Sie Aufzählungstyp von enumerator
#include <cstdio>
enum Foo { Foo_A, Foo_B };
enum Bar { Bar_A, Bar_B };
template<typename enumeration, int enumerator>
struct tpl;
template<int enumerator>
struct tpl<Foo, enumerator>
{
tpl() { printf("Foo: %d\n", enumerator); }
};
template<int enumerator>
struct tpl<Bar, enumerator>
{
tpl() { printf("Bar: %d\n", enumerator); }
};
int main()
{
tpl<Foo, Foo_A> foo_a;
tpl<Foo, Foo_B> foo_b;
tpl<Bar, Bar_A> bar_a;
tpl<Bar, Bar_B> bar_b;
return 0;
};
Gibt es eine Möglichkeit, die „Vervielfältigung“ am Einsatzort zu reduzieren? I.e. kann ich den Enumerationstyp "Foo" aus dem Enumerator "Foo_A" etc. nicht ableiten und den im obigen Template-Code irgendwie verwenden? Würde hier eine enum-Klasse helfen?
Dieser Code sieht wie eine Lösung für ein Problem aus. Was ist das Problem? –