2016-11-14 58 views
-2

当我写C++代码和我使用的是结构要求作为一元“和”操作数。错误:左值传递的std :: string

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 ::字符串,我想使它char *之用c_str()。哪里不对?

+5

把它作为论据? – NathanOliver

+0

显示get_string'的'定义(和它做了什么) –

回答

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 **虽然这很奇怪,然后使参数之前必须声明一个中间变量例如像这样

常量字符* P =信息 - >客户端。 c_str();

和你为什么要使用`&`有使用表达式&p

+0

也许参考会更好,不是吗? – Charles

+0

如果我删除及,我仍然采取错误:不能“为const char *”转换为“为const char **” – cateof

+1

@cateof看到我更新的帖子。但我认为你一般做错了。 –

相关问题