错误:传递 std::string 时需要左值作为一元"&"操作数
error: lvalue required as unary ‘&’ operand when passing std::string
我正在编写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:左值需要作为一元' & '操作数"
row_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 char *
。
然而,不清楚你想要达到什么目的。也许你应该声明相应的参数,例如const std::string &
,并传递std::string
本身的对象作为参数?
如果相应的形参声明为const char **(虽然这很奇怪),那么在传递实参之前必须声明一个中间变量,例如:
const char *p = info->client.c_str();
并使用表达式&p
相关文章:
- 控制允许动态运行c++的并发操作数
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 错误 C2679:二进制"<<":未找到采用类型 'std::string_view' 的右侧操作数的运算符(或者没有可接受的转换)
- C++ 带有向量的 IF 计算操作数
- 是否所有C++运算符都接受操作数?
- 一元*运算符的操作数是否期望一个 prvalue
- 一元"运算符"未在C++中定义
- 与'operator='不匹配(操作数类型'String'且"void")
- 如何解决一元"*"(有"字符")错误的无效类型参数?
- 不正确的操作数类型 MSVC
- C2678 二进制 '==':未找到采用 'Card' 类型左操作数的运算符(或者没有可接受的转换)
- 错误:类型"double()"和"double()"的操作数无效到二进制&quo
- 我的运算符重载是否有效<<(流插入)左操作数不是 ostream
- C++:需要右值作为一元 '&' 操作数
- 在 C++11 中需要右值作为一元'&'操作数
- 尝试打印 a[1] 的地址时错误:弹出一元'&'操作数时需要左值
- 需要作为一元'&'操作数的错误左值
- 作为一元'&'操作数所需的目标C++值
- 错误:传递 std::string 时需要左值作为一元"&"操作数
- C++ 作为一元'&'操作数所需的右值