2016-11-14 6 views
-2

私はC++コードを書いていますが、構造体を使用しています。エラー:std :: stringを渡すときに単項「&」オペランドとして左辺値が必要です

私は関数の中で、この構造体へのポインタを渡していると私はこの

get_string(row_by_name(row, "cl"), &info->client.c_str()); 

のようにそれを使用していますが、コンパイラがエラー「*エラーで文句

struct Info_t { 
    cass_int64_t internal_id; 
    cass_double_t amount; 
    std::string client; 
} 

:左辺値は単項 『&』オペランドとして必要"

row_by_nameの3番目の引数はconst char *でなければなりません。私はstd :: stringを渡しています。これは、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型のように宣言されている場合は**それは奇妙ですが、その後、引数を渡す前に、あなたはこの

のconstのchar * p = info->クライアントのような例えば中間変数を宣言する必要があります。 c_str();

、あなたがそこに ``使用していると、なぜ表現&p

+0

リファレンスはいいでしょうか? – Charles

+0

&を削除すると、エラーが発生します。 'const char *'を 'const char **'に変換できません。 – cateof

+1

@cateof最新の記事をご覧ください。しかし、私はあなたが一般的に何か間違っていると思います。 –

関連する問題