错误消息:使用"string* +="后"no match for 'operator+='"
Error Message: "no match for 'operator+='" after using "string* +="
我对 C++ 有问题。我使用了一个字符串指针,并希望动态添加另一个字符串。 但是后来我收到此错误消息:
与"运算符+="不匹配(操作数类型为"std::__cxx11::string
* {aka std::__cxx11::basic_string*}"和"std::__cxx11::字符串{aka std::__cxx11::basic_string}"(
void Stammbaum::printTree(Node* node, string* s){
printLeftTree(node, s, 0);
}
void Stammbaum::printLeftTree(Node* node, string* s, int i){
if(node == NULL)
return;
if(i != 0)
printLeftTree(node->Mutter, s, 1);
string temporaryString;
temporaryString = "/-- " + node->vorname + " " + node->nachname + "n";
s += temporaryString; <------------------------------Getting the error in this Line--
printLeftTree(node->Vater, s, 1);
}
s
是一个字符串指针,所以应该是这个
*s += temporaryString;
如果我理解您在这里要做什么,那么通常在C++中您会使用引用而不是指针,那么您不需要*
.
变量s
是指向std::string
对象的指针,尝试添加到它会增加指针本身,而不是它指向的对象。
您需要取消引用指针才能获取std::string
对象:
*s += temporaryString;
更好的解决方案(IMO(是使用引用而不是指针。
你也可以使用std::string
成员函数append
,在末尾附加字符串;
s->append( temporaryString );
像其他人建议的那样,使用引用而不是指针
相关文章:
- 使用for循环检查数组中的重复项
- 正在使用for循环创建QScatterSerie
- 在更改for循环的第三部分后,未使用for循环结果
- C++ 无法在字符数组中使用 for 循环打印字母模式
- 如何从使用 for 循环中的矢量大小的矢量中删除元素
- 遇到此问题时遇到困难:允许用户输入数组的值并使用 for,而循环也输出输入的最大数字
- <string> 使用 for 循环写入向量
- 二进制表达式的操作数无效 - 使用 for 和迭代器
- 为什么即使使用 for 循环遍历我的向量,它也没有输出到控制台?(C++)
- 在变量声明中使用 for 循环
- 在C++中使用 for 循环的数组迭代
- Pybind11:使用 for 循环使用 OpenMP 访问 python 对象
- 如何在 c++ 中使用 for 循环输出矢量中的所有对象
- 我想在 C++ 中使用 for 循环创建类对象
- 使用现代C++在 Eigen3 矩阵上使用 for 循环进行元素操作的优雅方式
- 使用 for 循环是否比在 C++ 中将内容保存在向量中更快?
- 为什么我在使用 for 循环和 cout 命令时没有打印出矢量
- 如何在c++中仅使用for循环打印此代码的垂直直方图
- 在指针迭代中使用for循环时出现分段错误
- 如何在使用for循环和数组时更改为c代码