我熟悉如何使用类重载运算符,但是在使用枚举时遇到了一些麻烦,因为我以前从未使用过它们。该程序的目的是摆脱任何菜单,使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;
}