![](/img/trans.png)
[英]Getting "error: cannot convert 'std::__cxx11::string* {aka std::__cxx11::basic_string<char>*}' to 'const char*' error while passing a path as argument
[英]Error: passing ‘const string {aka const std::__cxx11::basic_string<char>}’ as ‘this’ 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;
}
此代码用于检查传递的double参数是否无效,如下所示:
if (!double_param(&p, &b1)) //p is pointer and b1 is parameter.
//throw error;
并且,我需要编写等效的代码来处理3个字符长的字符串。 我自己得到了这个:
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;
}
但出现以下编译错误:
error: passing ‘const string {aka const std::__cxx11::basic_string<char>}’ as ‘this’ argument discards qualifiers [-fpermissive]
(*ptr_val) = v;
^
感谢任何建议,以解决此错误。 另外,请指出我的代码中的错误并进行一些解释,以便我可以更好地理解和学习。 提前致谢。
*ptr_val
是指向const string
的指针。 您正在尝试更改const string
的值,当然您不能这样做。
您可以改用这样的const指针: string * const ptr_val
这意味着您可以更改指针所指向的数据的值,但是不能更改指针所指向的数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.