ptree
クラスの前方宣言をboost::property_tree
として使いたいと思います。boost :: interprocess :: ptreeのFoward宣言
私はVisual Studio 2010を使用し、バージョン1.48.0をブーストします。
私は、私はそれをコンパイルしようとしたとき、私は
#include <boost/property_tree/ptree.hpp>
using boost::property_tree::ptree;
Options::Options()
{
m_pxPropertyTree = new ptree();
// other stuff
}
私の.cppファイル内のクラスを使用し、その後、私の.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_
を次のように前方宣言を行います次のエラーを取得します。
エラー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;
です。
私は間違って何をしていますか、このケースでは前方宣言を正しく使用する方法はありますか?
'ptree'はクラスではなく、' typedef'(別のタイプの、すなわち別名)。つまり、クラスとして宣言して宣言しようとすると、クラスと型定義が衝突します。 –
私はbasic_ptreeテンプレートをクラスフォワードする必要がありますか? – Jepessen
@JoachimPileborgなぜあなたは答えの代わりにコメントしましたか? –