错误:左值必须为一元‘&’;传递std::string时的操作数 我正在编写C++代码,我使用的是Strut。
错误:左值必须为一元‘&’;传递std::string时的操作数 我正在编写C++代码,我使用的是Strut。,c++,C++,struct Info_t { cass_int64_t internal_id; cass_double_t amount; std::string client; } 我在一个函数中传递一个指向这个结构的指针,并且我像这样使用它 get_string(row_by_name(row, "cl"), &info->client.c_str()); 但是编译器抱怨错误“*error:levaluerequired作为一元操作数”&“操作数” _by_na
struct Info_t {
cass_int64_t internal_id;
cass_double_t amount;
std::string client;
}
我在一个函数中传递一个指向这个结构的指针,并且我像这样使用它
get_string(row_by_name(row, "cl"), &info->client.c_str());
但是编译器抱怨错误“*error:levaluerequired作为一元操作数”&“操作数”
_by_name行的第三个参数应该是const char*,我正在传递一个std::string,我正试图用c_str()使其成为char*。怎么了?要避免错误,只需写
get_string(row_by_name(row, "cl"), info->client.c_str());
不能将运算符&应用于临时对象。这句话
info->client.c_str()
已具有类型常量字符*
然而,目前还不清楚你想要实现什么。也许您应该声明相应的参数,例如const std::string&
并将std::string
本身的对象作为参数传递
如果相应的参数声明为const char**,尽管这很奇怪,但是在传递参数之前,您必须声明一个中间变量,例如
get_string(row_by_name(row, "cl"), &info->client.c_str());
const char*p=info->client.c_str()
并使用表达式
&p
将其作为参数传递。为什么在那里使用&
呢?显示获取字符串的定义(并解释它的作用)也许一个引用会更好,不是吗?如果我删除&,我仍然会出错:无法将“const char*”转换为“const char**”@cateof查看我更新的帖子。但我认为你总的来说做错了什么。