1

rapidjson::Valuea のすべてのメンバーをとして返す関数が必要std::vectorです。if私は必要なときにsを書くことを避けようとしてIsArray()います。残念ながら、次のコードは機能しません。

std::vector<const rapidjson::Value&> valueToList(const rapidjson::Value& value)
{
    std::vector<const rapidjson::Value&> valueList;

    if (value.IsArray())
    {
        for (rapidjson::SizeType i = 0; i < value.Size(); i++)
        {
            valueList.push_back(val[i]);
        }
    }
    else
    {
        valueList.push_back(val);
    }

    return valueList;
}

エラーpush_back is ambiguousが表示されます。これを克服する簡単な方法はありますか?ありがとう。

4

2 に答える 2

2

std::vector ベクトルは代入可能でなければならないため、const 参照の std::vector を持つことはできません。代わりに、rapidjson::Valueまたはそれらへのポインターを保存してみてください。本当に参照を保存したい場合は、std::reference_wrapperをチェックしてください。

C++ 標準のセクション 23.2.4 クラス テンプレート ベクトルから:

...格納されたオブジェクトは、Assignable の要件を満たす必要があります。

于 2015-01-07T08:23:23.733 に答える
0

できません。sへのポインタを格納Valueすれば問題ありません。をなくさないようにしてくださいrapidjson::Document

于 2015-01-07T08:41:04.923 に答える