Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误:左值必须为一元‘&’;传递std::string时的操作数 我正在编写C++代码,我使用的是Strut。_C++ - Fatal编程技术网

错误:左值必须为一元‘&’;传递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查看我更新的帖子。但我认为你总的来说做错了什么。