错误:传递std :: string

时间:2016-11-14 19:42:03

标签: 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());

但编译器抱怨错误“*错误:左值作为一元'和''操作数'

row_by_name的第三个参数应该是const char *,我正在传递一个std :: string,我试图用c_str()使它成为char *。有什么问题?

1 个答案:

答案 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

将其作为参数传递