C++中的前向声明
我想声明:C++中的前向声明,c++,templates,forward-declaration,C++,Templates,Forward Declaration,我想声明: namespace boost { namespace property_tree { template<typename Key, typename Data, typename KeyCompare = std::less<Key> > class basic_ptree; typedef basic_ptree< std::string, std::string > ptree;
namespace boost {
namespace property_tree {
template<typename Key, typename Data, typename KeyCompare = std::less<Key> >
class basic_ptree;
typedef basic_ptree< std::string, std::string > ptree;
}
}
但我的g++由于默认模板参数而忽略了重新定义。如何实现这一点?要向前声明属性树,您应该包括
#include <boost/property_tree/ptree_fwd.hpp>
头,而不是自己声明一个。要向前声明属性树,应该包括
#include <boost/property_tree/ptree_fwd.hpp>
头,而不是自己声明一个。不包含选项?不包含选项?转发声明的要点是不希望包含头。@作业:错误。重点是没有给出整个结构的完整定义,以允许向前参考。。。。当标题被调用时…\u fwd。hpp@KennyTM:当然,这就是我的意思。我同意我没有说得很清楚:-而且,我没有注意到_fwd.hpp。Boost会为转发声明制作特殊的标题吗?@Job:Yes。由于通常未指定如何定义填充,唯一安全的方法是包含_fwd头。转发声明的要点是不希望包含头。@作业:错误。重点是没有给出整个结构的完整定义,以允许向前参考。。。。当标题被调用时…\u fwd。hpp@KennyTM:当然,这就是我的意思。我同意我没有说得很清楚:-而且,我没有注意到_fwd.hpp。Boost会为转发声明制作特殊的标题吗?@Job:Yes。因为通常未指定如何定义填充,所以唯一安全的方法是包含_fwd头。