错误:将"const string {aka const std::__cxx11::basic_string}"<char>作为"this"参数传递
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;
}
此代码用于检查传递的双参数是否无效,如下所示:
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
的值,这当然是无法做到的。
相反,您可以执行这样的常量指针:string * const ptr_val
这意味着您可以更改指针所指向的数据的值,但不能更改指针指向的内容。
相关文章:
- cppcheck在const std::string[]上引发警告
- 使用 std::string () const 函数启动线程或未来
- c++ const mysqlpp::String ambiguous error
- OpenCV undefined reference to 'cv::imread(cv::String const&, int)'
- "No suitable conversion function from 'std::string' to 'const char *' exists"
- 如何在 c++ 中将向量转换为<string>常量字符* const*?
- 无法从'const std::string [3]'转换为'std::string'
- 从 std::string 转换为 const 无符号整数
- 为什么std::string没有(显式)const char*强制转换
- 如何使用 c++ 中的 int* count(const string&s)计算字符串中每个数字的出现次数?
- 将字符数组添加到 const string&in C++
- 为什么 stack<const string> 不能用 g++ 编译?
- 在函数中传递只读向量时,冗长真的值得吗?const vector<const string>&
- 为什么我不能从 const String& 方法返回 NULL?
- 返回对字符串对象的引用,错误:类型为 âconst string& 的引用初始化无效。C++
- 为什么我不能使用 "const string* sp = 0" 在构造函数中初始化
- Intel c++编译器- const string是可修改的
- c++头文件中的静态const string
- 错误:将"const string {aka const std::__cxx11::basic_string}"<char>作为"this"参数传递
- 将非常量向量传递给引用<string> const 向量<const string>?