Pregunta: | 18890 - STL: CLASE VALARRAY |
Autor: | Cristina Campos Merino |
Hola,
Cuando compilo lo siguiente: bool EsPrimo(valarray<int>& num) { valarray<int> contador (3); contador=1; if (num % contador == 0) ... } ... me da el error: error C2451: conditional expression of type 'class std::valarray<bool>' is illegal No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called Los operadores % y == estan definidos en la clase valarray, ya que es propia de la STL de C. Estoy utilizando Visual C++ 5.0 ¿Alquien sabe a qué puede ser debido este error? Gracias. |
Respuesta: | Reynaldo Hidalgo |
lo que te pasa es que al hacer : if (num % contador == 0)
estas llamando a la funcion de valarray : template <class T> valarray<bool> operator==(const valarray<T>& lhs, T& rhs); que lo que devuelve no es un bool sino un valarray<bool> y no hay funcion de conversion definida para estos tipos, si lo que quieres es chequear que el valarray<bool> tenga todos sus elementos a cero, se pueden buscar soluciones alternativas. como consejo, no dejes de usar y conocer la STL que es una herramienta potentisima. |