Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string>
- class Enum1
- {
- public:
- enum EnumerationItem
- {
- BEARS1,
- BEARS2,
- BEARS3
- };
- static std::string toString(EnumerationItem e)
- {
- switch(e)
- {
- case BEARS1: return "BEARS1";
- case BEARS2: return "BEARS2";
- case BEARS3: return "BEARS3";
- // Should ideally throw an exception
- default: return "";
- }
- }
- };
- class Enum2
- {
- public:
- enum EnumerationItem
- {
- TIGERS1,
- TIGERS2,
- TIGERS3
- };
- static std::string toString(EnumerationItem e)
- {
- switch(e)
- {
- case TIGERS1: return "TIGERS1";
- case TIGERS2: return "TIGERS2";
- case TIGERS3: return "TIGERS3";
- // Should ideally throw an exception
- default: return "";
- }
- }
- };
- template <typename T>
- class TemplateExample
- {
- public:
- using Enumeration = typename T::EnumerationItem;
- public:
- TemplateExample(Enumeration e)
- : e { e } {}
- virtual ~TemplateExample() {}
- std::string toString()
- {
- return T::toString(this->e);
- }
- private:
- Enumeration e;
- };
- int main()
- {
- TemplateExample<Enum1> t1(Enum1::EnumerationItem::BEARS1);
- TemplateExample<Enum2> t2(Enum2::EnumerationItem::TIGERS3);
- std::cout << t1.toString() << std::endl;
- std::cout << t2.toString() << std::endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement