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 就不是一个选择。
我有以下代码:
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 就不是一个选择。