我嘗試將枚舉元素作爲文本而不是數字進行打印。下面是代碼:打開迭代器
#include <iostream>
#include <unordered_set>
enum enm{
One,
Two
};
class Complex{
public:
void func(std::unordered_multiset<int> _v);
void name(std::unordered_multiset<int>::const_iterator i);
};
void Complex:: name(std::unordered_multiset<int>::const_iterator i){
switch(*i) {
case One:
std::cout<<"One"<<std::endl;
break;
case Two:
std::cout<<"Two"<<std::endl;
break;
}
}
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<<"Res: "<<name(i)<<endl;
}
}
int main(){
Complex c;
std::unordered_multiset<int> ms;
c.func(ms);
return 0;
}
我有一個函數name(std::unordered_multiset<int>::const_iterator i)
,在迭代其中使用開關。問題是 - 它失敗了。但我不知道如何解決這個問題,以及它爲什麼會發生。
編輯: 我: 的std :: std::cout<<"Res: "<<name(i)<<std::endl;
不僅:name(i);
解決方案 因此,它的工作原理,如果: std::cout<<"Res: "<<std::endl; name(i);
*「失敗」*如何? [運行良好](http://cpp.sh/2a2t) – CoryKramer
我得到這個 - 錯誤:形成引用無效 – user3856196
這是不是[相同的問題](http://stackoverflow.com/questions/31119555/overloading-of-operator-using-iterator-as-a-parameter)你昨天問過嗎? – Barry