Я начинаю изучать C++ и не могу найти причину ошибки ниже. Этот код есть в книге "Teach Yourself C++".
main.cpp:13: ошибка: неоднозначная перегрузка для «operator>>» в «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);
}
std::cin >> (int)ip;
? Это какstd::cin >> 2;
в каком-то смысле. - person chris   schedule 08.02.2014operator>>
это просто функция! Вы можете прекрасно определитьvoid operator>>(std::istream const&, int) {}
... coliru.stacked-crooked.com/a/fa91c4349036af74 а> - person sehe   schedule 08.02.2014<iostream>
ничего подобного не определяет, аstd::cin
не может неявно преобразовать в любой подходящий арифметический тип для битового сдвига. - person chris   schedule 08.02.2014