我开始学习C++,我无法找到下面错误的原因。此代码位于“Teach Yourself C++”一书中。运营商的模糊过载>>
的main.cpp:13:错误:不明确的重载“运营商>> '给std :: cin >>(int)的IP'
#include<iostream>
using namespace std;
enum ignition_parts {distributor=1,cap,points,plug,condenser,coil,wires,done};
main() {
ignition_parts ip;
do{
cout << "\nInsira no item (1-7, 8 para sair):";
std::cin >> (int)ip;
switch(ip){
case distributor: cout<< "Distribuidor";
break;
case cap: cout<< "Tampa";
break;
case points: cout << "Pontos";
break;
case plug:cout << "Vela";
break;
case condenser: cout<<"Condensador";
break;
case done: break;
default: cout << "No item ignorado";
break;
}
} while (ip != done);
}
你不应该得到多个匹配,你应该没有得到匹配。 – chris
@chris它有很多匹配需要/同样不好/隐式的转换。欢迎来到C++地狱:) – sehe
@sehe,恩,是的。我想说的是,如果编译器发现同样的*好的*匹配,那么编译器就会非常糟糕,从而导致调用不明确。 – chris