gpt4 book ai didi

c++ - vector 中的 STL Push_back 字符串

转载 作者:太空狗 更新时间:2023-10-29 19:48:11 25 4
gpt4 key购买 nike

我正在尝试将字符串放入字符串 vector 中,如下所示

void Node::set_val(string &val)
{
this->val.push_back(val);
}

但是当我尝试如下调用它时

Obj.set_val("10h;");

我得到以下错误,

error: no matching function for call to 'Node::set_val(const char [5])'

我假设""中的字符串与c++中的string相同,为什么会出现这样的错误?下面必须更改什么?

最佳答案

您正在通过非常量引用接收 std::string。非常量引用不能绑定(bind)到右值,例如 "10h;",因此您不能将文字传递给该函数。

如果你不打算修改参数,你应该通过常量引用来获取你的参数:

void Node::set_val(const string &val)
// ^^^^^

这样,一个临时的 std::string 将从您的 const char[5] 构造并传递给 set_val

您可以通过按值接收 string 并将其移动vector 中来改进它:

void Node::set_val(string val)
{
this->val.push_back(std::move(val));
}

这可以防止您制作一些不必要的拷贝。

关于c++ - vector 中的 STL Push_back 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30800171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com