Error de comstackción de c ++: ISO C ++ prohíbe la comparación entre puntero y entero

Estoy probando un ejemplo del libro C ++ de Bjarne Stroustrup, tercera edición. Al implementar una función bastante simple, obtengo el siguiente error de tiempo de comstackción:

error: ISO C++ forbids comparison between pointer and integer 

¿Qué podría estar causando esto? Aquí está el código. El error está en la línea if :

 #include  #include  using namespace std; bool accept() { cout <> answer; if (answer == "y") return true; return false; } 

¡Gracias!

Tienes dos formas de arreglar esto. La forma preferida es usar:

 string answer; 

(en lugar de char ). La otra forma posible de solucionarlo es:

 if (answer == 'y') ... 

(tenga en cuenta las comillas simples en lugar del doble, lo que representa una constante de caracteres).

Un literal de cadena está delimitado por comillas y es de tipo char * not char.

Ejemplo: "hello"

Entonces cuando comparas un char con un char * obtendrás el mismo error de comstackción.

 char c = 'c'; char *p = "hello"; if(c==p)//compiling error { } 

Para solucionarlo, utilice un literal de caracteres delimitado por comillas simples.

Ejemplo: 'c'

Necesita el cambio de esas comillas dobles en singles. es decir. if (answer == 'y') devuelve true ;

Aquí hay información sobre Literales de cadenas en C ++: http://msdn.microsoft.com/en-us/library/69ze775t%28VS.80%29.aspx

“y” es una cadena / matriz / puntero. ‘y’ es un tipo char / integral

Debe recordar usar comillas simples para constantes de caracteres. Entonces usa

if (answer == 'y') return true;

Más bien que

if (answer == "y") return true;

Probé esto y funciona