Código C++:
Ver original
Numero::Numero (const Cadena& numero) throw (Numero::Incorrecto) { char* num_nuevo = new char [numero.longitud() + 1]; struct EsBlanco { }; struct EsDigito : unary_function<char,bool> { }; *final_nuevo = '\0'; char* alfabetico = find_if (num_nuevo,final_nuevo,not1(EsDigito())); if (*alfabetico != '\0') throw(Incorrecto(DIGITOS)); throw(Incorrecto(LONGITUD)); if (!numeroValido(num_nuevo)) throw(Incorrecto(NO_VALIDO)); numero_ = num_nuevo; }
Recibo el siguiente error al compilar:
tarjeta.cpp: En el constructor ‘Numero::Numero(const Cadena&)’:
tarjeta.cpp:27:85: error: no hay una función coincidente para la llamada a ‘remove_if(char*&, char*, Numero::Numero(const Cadena&)::EsBlanco)’
tarjeta.cpp:27:85: nota: el candidato es:
/usr/include/c++/4.6/bits/stl_algo.h:1131:5: nota: template<class _FIter, class _Predicate> _FIter std::remove_if(_FIter, _FIter, _Predicate)
tarjeta.cpp:30:68: error: no hay una función coincidente para la llamada a ‘not1(Numero::Numero(const Cadena&)::EsDigito)’
tarjeta.cpp:30:68: nota: el candidato es:
/usr/include/c++/4.6/bits/stl_function.h:370:5: nota: template<class _Predicate> std::unary_negate<_Predicate> std::not1(const _Predicate&)
make: *** [tarjeta.o] Error 1