2016-03-05 68 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