Я использую библиотеку - nlohmann / json и хочу иметь член, который указывает на json
для внутреннего использования.
Я бы хотел не использовать всю библиотеку как зависимость от времени компиляции, поэтому я подумал об использовании указателя на объявленную вперед структуру
в заголовке
struct my_json; // forward declare
std::unique_ptr<my_json> memberJson;
в cpp:
struct my_json : public nlohmann::json {};
Но проблема в том, что когда я пытаюсь использовать его внутри класса, я получаю либо
error C2440: '=': cannot convert from 'nlohmann::json *' to 'my_json *'
При попытке назначить адрес результата reference operator[](const typename object_t::key_type& key)
обратно my_json *
или
error C2440: 'initializing': cannot convert from 'nlohmann::basic_json<std::map,std::vector,std::string,bool,int64_t,uint64_t,double,std::allocator,nlohmann::adl_serializer>' to 'my_json &'
при попытке присвоить результат reference operator[](const typename object_t::key_type& key)
my_json &
напрямую
Есть ли элегантный решение этого? (Если я хочу избежать reinterpret_cast
указателей) Безопасен ли static_cast
в этом сценарии?