0

プロパティ ツリー xml-parsing を使用してアプリケーションの設定を編集しています。構造体の default-settings を作成しました。

struct default_settings
{
    std::string imPath;          
    std::string calPath;
    std::string solPath;

    void load(const std::string &filename);
    void save(const std::string &filename,const std::string &image_path,const std::string &cal_path,const std::string &sol_path);

};

void default_settings::save(const std::string &filename,const std::string &image_path,const std::string &cal_path,const std::string &sol_path)
{

    ptree pt;

    pt.put("default.image-path", image_path);
    pt.put("default.cal-path", cal_path);
    pt.put("default.sol-path", sol_path);

    write_xml(filename, pt);    
}
void default_settings::load(const std::string &filename)
{

    ptree pt;

    read_xml(filename, pt);

    imPath = pt.get<std::string>("default.image-path");
    calPath = pt.get<std::string>("default.cal-path");
    solPath = pt.get<std::string>("default.sol-path");


}

アプリケーションの default_settings ds でグローバル変数を作成し、この変数 (ds.imPath) を介してそれらを呼び出すことにより、imPath、calPath、.. などの変数にアクセスします。

奇妙なことは、ロードが1回行われると機能することですが、例外が発生します

boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::property_tree::xml_parser::xml_parser_error> > at memory location 0x0016bf54..

何を指示してるんですか?

4

1 に答える 1

0

問題は const std::string をパラメーターとして使用することにありました!

于 2011-10-11T08:30:13.943 に答える