我正在编写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());
但编译器抱怨错误“*错误:左值作为一元'和''操作数'
row_by_name的第三个参数应该是const char *,我正在传递一个std :: string,我试图用c_str()使它成为char *。有什么问题?
答案 0 :(得分:1)
要逃避错误,请写下
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