I`d like to print enum values as text and use for it overloading. Suppose I have the following code:
#include <iostream>
#include <map>
#include <string>
#include <vector>
#include <unordered_set>
enum enm{
One,
Two
};
class Complex{
public:
friend std::ostream& operator<<(std::ostream& out, std::unordered_multiset<int>::const_iterator i){
switch (*i){
case One:{
return out<<"One";
}
case Two:{
return out << "Two";
}
}
}
void func(std::unordered_multiset<int> _v);
};
void Complex:: func(std::unordered_multiset<int> _v){
_v.insert(One);
_v.insert(Two);
for (std::unordered_multiset<int>::const_iterator i(_v.begin()), end(_v.end()); i != end; ++i){
std::cout <<"Num: " << *i <<std::endl; //need to get here "One", "Two" instead of 0, 1
}
}
int main(){
Complex c;
std::unordered_multiset<int> ms;
c.func(ms);
return 0;
}
The problem is this variant doesn`t work. So, I get 0, 1 instead of One, Two. Have no ideas how to do it properly. Thank you for help!