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
}
내부 클래스를 사용,
#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_
그럼 내 .H에서, 다음과 같은 방법으로 전방 선언을 할 다음 오류를 얻으십시오.
오류 C2371 : 'boost :: property_tree :: ptree': 재정의. 다른 기본 유형. c : \ lib \ boost \ 1.48.0 \ 32 \ boost \ property_tree \ ptree_fwd.hpp 95
(오류 설명이 다를 수 있습니다.).
ptree_fwd.hpp에, 나에게 오류를 제공 라인, 나는 전방 선언을 사용하지 않으면, 모든 것이 잘 어울리는 나는 성공적으로 컴파일, 대신 다음
typedef basic_ptree<std::string, std::string> ptree;
입니다.
내가 뭘 잘못하고 있으며,이 경우 올바르게 전달 선언을 어떻게 사용할 수 있습니까?
'ptree'는 클래스 아니지만,'typedef' (다른 유형의 즉 별칭). 이것은 클래스로 선언을 전달하려고 할 때 클래스와 타입 정의가 충돌 할 것임을 의미합니다. –
그래서 basic_ptree 템플릿을 클래스 전달해야합니까? – Jepessen
@JoachimPileborg 왜 대답 대신 대답하셨습니까? –