繁体   English   中英

错误:传递&#39;const字符串{aka const std :: __ cxx11 :: basic_string <char> }&#39;作为&#39;this&#39;参数

[英]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.

相关问题 获取“错误:无法转换 'std::__cxx11::string* {aka std::__cxx11::basic_string<char> *}' 到 'const char*' 错误,同时将路径作为参数传递</char> 'operator*' 不匹配(操作数类型为 'const string' {aka 'const std::__cxx11::basic_string<char> '})</char> OSX“错误:无法转换&#39;const std :: __ cxx11 :: basic_string”是什么意思 <char> “ 意思? 错误:从 &#39;const char&#39; 转换为非标量类型 &#39;std::string&#39; {aka &#39;std::__cxx11::basic_string<char> &#39;} 请求 错误:为&#39;operator std::string {aka std::__cxx11::basic_string 指定的返回类型<char> }&#39; 错误:传递&#39;const string {aka const std::basic_string<char> }&#39; 作为 ... 的 &#39;this&#39; 参数丢弃限定符 [-fpermissive] 尝试生成随机字母错误:无法转换 'std::__cxx11::string {aka std::__cxx11::basic_string<char> }' 到 'char' 在分配</char> 字符串未正确复制并显示错误:无法转换 'std::__cxx11::string {aka std::__cxx11::basic_string<char> }'</char> 在 std::__cxx11::basic_string 中获取未知的分段错误“(地址) <char, std::char_traits<char> ,..., std::allocator<char> &gt; 常量&amp;) 常量() 错误:无法从“向量”转换“标签” <std::vector<std::__cxx11::basic_string<char> &gt;&gt;' 到 ' 向量<std::__cxx11::basic_string<char> &gt;' </std::__cxx11::basic_string<char></std::vector<std::__cxx11::basic_string<char>
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM