错误消息:使用"string* +="后"no match for 'operator+='"

Error Message: "no match for 'operator+='" after using "string* +="

本文关键字:使用 for 消息 operator+ match no 错误 string      更新时间:2023-10-16

我对 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 );

像其他人建议的那样,使用引用而不是指针