Come inoltrare dichiarare boost :: ptree :: iterator
-
12-11-2019 - |
Domanda
Vorrei usare boost ptree nel mio progetto, ma poiché ptree.hpp fa includere circa altri file di intestazione da 1000 questo aumenta i tempi di compilazione drasticamente (ad esempio da 1s a 7s) e come è necessario in oltre 20 diversi file CPP, questo non è Accettabile (le intestazioni pre-condizionate non migliorano molto le cose). Quindi sto pensando di incapsulare il boost ptree nella mia classe, qualcosa come
// myptree.h
#include <boost/property_tree/ptree_fwd.hpp>
class myptree {
private:
boost::property_tree::ptree *m_tree;
public:
...
// adding new (single value) members to the the tree
void put(const std::string&, double);
void put(const std::string&, int);
void put(const std::string&, const std::string&);
// returning (single value) members of the tree
double get_double(const std::string&) const;
int get_int(const std::string&) const;
std::string get_str(const std::string&) const;
// working with subtrees
void push_back(const std::string&, const myptree&);
myptree get_child(const std::string&) const;
// import/export
void read_from_json(const std::string&);
void write_to_json(const std::string&) const;
};
Tuttavia, non riesco a implementare un iteratore in modo carino. Idealmente mi piacerebbe avere un boost::property_tree::ptree::iterator
come variabile membro privato che potrebbe essere iterate m_tree
usando le funzioni del mio membro ma come capisco da Come posso dichiarare una classe interiore? Questo generalmente non è possibile. Qualche modo elegante per implementare un iteratore all'interno di questa classe?
Nessuna soluzione corretta