Я хочу использовать предварительное объявление для класса ptree
boost::property_tree
.
Я использую Visual Studio 2010 и версию Boost 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;
Вместо этого, если я не использую предварительное объявление, все идет хорошо, и я успешно его компилирую.
Что я делаю не так и как я могу правильно использовать предварительную декларацию в этом случае?