Я пытаюсь представить тип объекта PDF в C++ с использованием вариантов. Объект PDF является один из следующих:C++ Взаимно рекурсивный вариант Тип
Boolean
Integer
Real
String
Name
Stream
Array<Object>
Map<Object, Object>
Как вы можете видеть, Object
типа взаимно рекурсивный, поскольку Array
типа потребует декларацию Map
типа, которая требовала бы заявления о Array
типа. Как я мог обойтись, представляя этот тип в C++? Если вариант не самый лучший способ, что это такое?
Вот что я пытался до сих пор, но он не компилируется из-за требований std::unordered_map
(я думаю) http://coliru.stacked-crooked.com/a/699082582e73376e
Проблема в том, что существует взаимная рекурсия между массивами и типами словарей. В этом примере показано, как вложить int_tree_t в свой собственный вариант, но мне нужно обратиться к typedef, который еще не определен – Ell
@Ell: Я не вижу такой рекурсии. Оба относятся к 'Object', который (я предполагаю) вариант, который вы определяете, но я бы подумал, что' typedef boost :: make_recursive_variant, Map > :: type Object; 'будет работать нормально. –
Ах, конечно. Извините, я не видел, как я могу это использовать, но, конечно, мне просто не нужен typedef. Большое спасибо и мои извинения за то, что не видели, что это решение в первый раз! – Ell