|
Boost Users : |
Subject: [Boost-users] [property tree] silly beginners question
From: Dietmar Hummel (hummel_at_[hidden])
Date: 2010-08-20 16:37:51
Hi all!
I am trying to read an xml file with property tree (first try).
Because I have dots int the tag names I must use the extended version of
the get functions.
So here is the slightly modified example code, which sadly does'nt
compile on vc2008.
Probably its a totally silly error on my side...
// Loads debug_settings structure from the specified XML file
void load(const std::string &filename)
{
// Create an empty property tree object
using boost::property_tree::ptree;
ptree pt;
// Load the XML file into the property tree. If reading fails
// (cannot open file, parse error), an exception is thrown.
read_xml(filename, pt);
// Get the filename and store it in the m_file variable.
// Note that we construct the path to the value by separating
// the individual keys with dots. If dots appear in the keys,
// a path type with a different separator can be used.
// If the debug.filename key is not found, an exception is thrown.
std::string m_file = pt.get< std::string >( '/', "debug/filename" );
// Get the debug level and store it in the m_level variable.
// This is another version of the get method: if the value is
// not found, the default value (specified by the second
// parameter) is returned instead. The type of the value
// extracted is determined by the type of the second parameter,
// so we can simply write get(...) instead of get<int>(...).
int m_level = pt.get( '/', "debug/level", 0);
// Iterate over the debug.modules section and store all found
// modules in the m_modules set. The get_child() function
// returns a reference to the child at the specified path; if
// there is no such child, it throws. Property tree iterators
// are models of BidirectionalIterator.
std::vector< std::string > m_modules;
BOOST_FOREACH( ptree::value_type &v, pt.get_child( '/',
"debug/modules" ) )
{
m_modules.push_back( v.second.data() );
}
}
vc says:
1>c:\projekte\proptreetest\proptreetest\proptreetest.cpp(23) : error
C2664: 'std::basic_string<_Elem,_Traits,_Ax>
boost::property_tree::basic_ptree<Key,Data>::get<std::string>(const
boost::property_tree::string_path<String,Translator> &,const Type &)
const': Konvertierung des Parameters 1 von 'char' in 'const
boost::property_tree::string_path<String,Translator> &' nicht möglich
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>,
1> Key=std::string,
1> Data=std::string,
1> String=std::string,
1> Translator=boost::property_tree::id_translator<std::string>,
1> Type=std::string
1> ]
1> and
1> [
1> String=std::string,
1> Translator=boost::property_tree::id_translator<std::string>
1> ]
So, it looks to me like the compiler does'nt know about the extended get
functions...
Regards
Dietmar
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net