Я хотел бы печатать значения перечисления в виде текста и использовать для его перегрузки. Предположим, у меня есть следующий код:Перегрузка оператора << с использованием итератора в качестве параметра
#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;
}
Проблема в том, что этот вариант не работает. Итак, я получаю 0, 1 вместо One, Two. Не имеют идей, как это сделать должным образом. Благодарим за помощь!
В качестве примечания стороны: Не используйте '_' в качестве префикса переменной, который зарезервирован для внутренних реализаций реализации C++. –