我试图在字符串向量中推送一个字符串,如下所示
void Node::set_val(string &val)
{
this->val.push_back(val);
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将其称为如下
Obj.set_val("10h;");
Run Code Online (Sandbox Code Playgroud)
我得到以下错误,
error: no matching function for call to 'Node::set_val(const char [5])'
Run Code Online (Sandbox Code Playgroud)
我假设""中的字符串与stringc ++ 中的字符串相同,为什么会出现这样的错误?下面有什么要改变的?
您正在接受std::string非const引用.非const引用不能绑定到rvalues "10h;",因此您无法将文字传递给该函数.
如果你不打算修改参数,你应该通过reference-to-const来获取你的参数:
void Node::set_val(const string &val)
// ^^^^^
Run Code Online (Sandbox Code Playgroud)
这样,临时std::string将由你构建const char[5]并传入set_val.
你可以通过接受string值并将move其加入到vector:
void Node::set_val(string val)
{
this->val.push_back(std::move(val));
}
Run Code Online (Sandbox Code Playgroud)
这可以防止您制作一些不必要的副本.
| 归档时间: |
|
| 查看次数: |
1202 次 |
| 最近记录: |