处理枚举时,如何重载istream和ostream运算符?

时间:2018-11-22 19:35:02

标签: c++ enums operator-overloading

我熟悉如何使用类重载运算符,但是在使用枚举时遇到了一些麻烦,因为我以前从未使用过它们。该程序的目的是摆脱任何菜单,使istream和ostream运算符过载,并仅在有效证件套印出证件套号。我目前在打印enumVar时只得到0,但是如果满足有效套准的条件,我想打印用户的输入。这是我的代码:

#include <iostream>
#include <string>
#include <type_traits>

using namespace std;

enum suits {hearts, diamonds, clubs, spades};

template<typename T>

typename std::enable_if<std::is_enum<T>::value, std::istream&>::type
operator >>(std::istream &is, T& enumVar)
{
   std::cout << "\n\nenum\n";
   int intVal;
   is >> intVal;
   enumVar = static_cast<T>(intVal);
   std::cout << enumVar;

   return is;
}

int main()
{
   suits card;

   cout << "\n\nEnter the suit of your card: ";
   cin >> card;

   return 0;
}

0 个答案:

没有答案