typedef 的前向声明

Forward declaration of typedef

我有以下代码:

namespace boost {
    namespace property_tree {
        template<class Key, class Data, class KeyCompare>
        class basic_ptree;

        typedef basic_ptree<std::string, std::string, std::less<std::string> > ptree;
    }
}

class JsonReader {

public:
    JsonReader();

    ~JsonReader() { };

    void processValuation(std::vector<Simulation> &simulations);

private:

    std::string processOptionParams(const ptree::value_type &node);

    void loadConfig(std::string filename);

    std::shared_ptr<boost::property_tree::ptree> jsonTree_;
};

一切都很好,但我不确定如何转发声明ptree::value_type。 有什么想法吗?

您可以在此处找到具有 value_type 定义的文件 http://www.boost.org/doc/libs/1_60_0/boost/property_tree/ptree.hpp

您不能转发声明前向声明类型的类型成员。这让您要么从 ptree 中提取 value_type 的实际定义(不推荐),要么简单地包括完整的 header ptree.hpp

一旦您需要 header 文件中 class 的内部结构,forward-declaration 就不是一个选择。