0
#include "json.hpp"

#include <memory>
#include <vector>
#include <iostream>


struct json_node;
using json_node_ptr = std::shared_ptr<json_node>;

struct json_node
{
    int id;
    std::vector<json_node_ptr> children;

    json_node(int _id)
        : id{ _id }
    {
    }
};

void to_json(nlohmann::json& j, const json_node_ptr& node)
{
    j = {{"ID", node->id}};
    if (!node->children.empty()) {
        j.push_back(  nlohmann::json {"children", node->children});
        //j["children"] = node->children;
    }
}

int main()
{
}

次のエラーが表示されます。これを解決するにはどうすればよいですか? その背後にある問題は何ですか?

簡単な回避策はありますか?クライアント ライブラリを変更するのは簡単ではありません。

error: no matching function for call to ‘basic_json<>::push_back(<brace-enclosed initializer list>)’
             j.push_back( {"children", node->children} );

ヘッダー ファイルはこちら: https://github.com/nlohmann/json/blob/v2.0.10/src/json.hpp

更新: この問題は、ライブラリの古いバージョンで発生します。最新バージョンで修正されています。

4

1 に答える 1