Frage

Ich versuche, einen unveränderlichen Datei-Pfad Werttyp zu definieren, unter Ausnutzung von boost :: Fliegengewicht zu teilen Pfadkomponenten. So etwas wie folgt aus:

struct filepath_data;
typedef boost::flyweight<filepath_data> filepath;
struct filepath_data {
    boost::optional<filepath> parent;
    std::string name;
};

Natürlich, das sieht wie eine rekursive Struktur, aber boost::flyweight<T> nicht wirklich (selbst) enthält eine Kopie T, nur einen Punkt zu einem T, die in dem entsprechenden Halter nachgeschlagen werden können, so denke ich, diese Struktur soll Arbeit.

Leider ist es nicht kompiliert werden, denn wenn g ++ trifft die typedef, dass filepath_data klagt unvollständig ist.

Also, die Frage ist, kann ich Nutzung der Flexibilität und erweiterte Vorlage Argumente für boost::flyweight<> machen diese Struktur Arbeit zu machen, und wenn ja, wie?

War es hilfreich?

Lösung

Dieses Beispiel zeigt, wie Boost.Flyweight kombinieren mit einer rekursiven Datenstruktur Boost.Variant und boost::recursive_wrapper . Vielleicht können Sie einen ähnlichen Ansatz für Ihr Problem verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top