Ich habe den folgenden Code, mit Doppel für den Umgang:Fehler: 'const string {aka const std :: __ cxx11 :: basic_string <char>}' vorbei "dieses Argument
static bool
double_param(const char ** p, double * ptr_val)
{
char *end;
errno = 0;
double v = strtod(*p, &end);
if (*p == end || errno) return false;
*p = end;
*ptr_val = v;
return true;
}
Dieser Code verwendet wird, um zu überprüfen ob übergeben Doppel Parameter wie so ungültig ist:
if (!double_param(&p, &b1)) //p is pointer and b1 is parameter.
//throw error;
Und, ich brauche für den Umgang mit einer Schnur von 3 Zeichen lang einen gleichwertigen Code zu schreiben. Ich habe dies auf meinem eigenen bekommen:
static bool
string_param(const char ** p, const string * ptr_val)
{
char *end;
errno = 0;
int v = strtol(*p, &end, 10);
if (*p == end || errno) return false;
*p = end;
*ptr_val = v;
return true;
}
aber ich habe den folgenden Compiler-Fehler:
error: passing ‘const string {aka const std::__cxx11::basic_string<char>}’ as ‘this’ argument discards qualifiers [-fpermissive]
(*ptr_val) = v;
^
Irgendwelche Vorschläge, um diese Fehler werden geschätzt zu bekommen. Bitte weisen Sie auch auf den Fehler in meinem Code hin und erklären Sie ein wenig, damit ich besser verstehen und lernen kann. Danke im Voraus.
Wenn Sie '* ptr_val' zuweisen, kann es in der Signatur der Funktion nicht 'const' sein. Du musst einen auswählen, wird es sich ändern (nicht const) oder nicht (const)? – SirGuy
+1 GuyGreer Oh, warum setze ich immer const mit String ein. Fast ein Muskelgedächtnis. Danke, dass du darauf hingewiesen hast. Das war buchstäblich die einzige Sache, die Kompilierungsfehler verursachte. – Duh