Ik probeer een voorbeeld uit het C++-boek van Bjarne Stroustrup, derde editie. Tijdens het implementeren van een vrij eenvoudige functie, krijg ik de volgende fout bij het compileren:
error: ISO C++ forbids comparison between pointer and integer
Waardoor kan dit worden veroorzaakt? Hier is de code. De fout staat in de regel if
:
#include <iostream>
#include <string>
using namespace std;
bool accept()
{
cout << "Do you want to proceed (y or n)?\n";
char answer;
cin >> answer;
if (answer == "y") return true;
return false;
}
Bedankt!
Antwoord 1, autoriteit 100%
Je kunt dit op twee manieren oplossen. De geprefereerde manier is om:
string answer;
(in plaats van char
). De andere mogelijke manier om het op te lossen is:
if (answer == 'y') ...
(let op enkele aanhalingstekens in plaats van dubbele, wat neerkomt op een char
constante).
Antwoord 2, autoriteit 14%
Een letterlijke tekenreeks wordt gescheiden door aanhalingstekens en is van het type char* en niet char.
Voorbeeld: "hello"
Dus als je een char met een char* vergelijkt, krijg je dezelfde compileerfout.
char c = 'c';
char *p = "hello";
if(c==p)//compiling error
{
}
Gebruik een letterlijke char die wordt gescheiden door enkele aanhalingstekens om dit op te lossen.
Voorbeeld: 'c'
Antwoord 3, autoriteit 10%
Je moet die dubbele aanhalingstekens veranderen in singles.
d.w.z. if (answer == 'y')
geeft true
terug;
Hier is wat informatie over String Literals in C++:
http://msdn.microsoft.com/en- us/library/69ze775t%28VS.80%29.aspx
Antwoord 4, autoriteit 8%
“y” is een string/array/pointer. ‘y’ is een char/integraal type
Antwoord 5, autoriteit 6%
Je moet niet vergeten om enkele aanhalingstekens te gebruiken voor char-constanten.
Dus gebruik
if (answer == 'y') return true;
In plaats van
if (answer == "y") return true;
Ik heb dit getest en het werkt