2016-03-05 67 views
1

的提前声明我有以下代码:的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

+1

你有什么特别的理由要你提前申报吗? –

回答

2

不能向前声明类型成员关向前声明的类型的。这使得你只需从ptree(不推荐)中提取value_type的实际定义,或者仅仅包含完整标题ptree.hpp

一旦你需要在你的头文件中的类的内部,正向声明不是一个选项。

+0

好的,谢谢,我意识到我们不能转发声明'普通'类的成员,但我认为它可能与typedef不同。无论如何,非常感谢! – JosephConrad