ptree
のクラスに前方宣言を使いたいboost::property_tree
。
私は Visual Studio 2010 とブースト バージョン 1.48.0 を使用しています。
.h で、次の方法で前方宣言を行います
#ifndef OPTIONS_H_
#define OPTIONS_H_
namespace boost
{
namespace property_tree
{
class ptree;
}
}
class Options
{
// something
private:
boost::property_tree::ptree *m_pxPropertyTree;
};
#endif // OPTIONS_H_
次に、.cpp 内でクラスを使用します。
#include <boost/property_tree/ptree.hpp>
using boost::property_tree::ptree;
Options::Options()
{
m_pxPropertyTree = new ptree();
// other stuff
}
コンパイルしようとすると、次のエラーが表示されます
エラー C2371: 'boost::property_tree::ptree': 再定義。ベースの種類が違います。c:\lib\boost\1.48.0\32\boost\property_tree\ptree_fwd.hpp 95
(エラーの説明は異なる場合があります。イタリア語版の Visual Studio を使用しているため、翻訳しました)。
ptree_fwd.hpp でエラーが発生する行は次のとおりです。
typedef basic_ptree<std::string, std::string> ptree;
代わりに、前方宣言を使用しない場合、すべてがうまくいき、正常にコンパイルされます。
私が間違っていることと、この場合に前方宣言を正しく使用するにはどうすればよいですか?