我想創建一個配置類,它使用rapidxml從xml讀取數據。 因此,我有一個私人xml_document
我構造的內部解析:從其他類調用此方法創建違規讀取
class Config
{
public:
Config();
~Config();
/*returns the first found node*/
xml_node<>* findNode(const char* name);
/*get an configuration value. It's always a char*/
char* getConfigValue(const char* name);
private:
rapidxml::xml_document<>* m_doc;
};
//cpp
Config::Config()
{
m_doc = new xml_document<>();
rapidxml::file<> xmlFile("config.xml");
m_doc->parse<0>(xmlFile.data());
//LOG(getConfigValue("width")); // here it works
}
xml_node<>* Config::findNode(const char* name)
{
return m_doc->first_node()->first_node(name);
}
char* Config::getConfigValue(const char* name){
return m_doc->first_node()->first_node(name)->value();
}
裏面的wWinMain
的我創建一個配置opject並嘗試調用的方法。
Config* config = new Config();
LOG(config->findNode("width")->value()); // this does create violation reading
但是如果我把同一行放到Config類的構造函數中,它沒有任何問題。這裏出了什麼問題?
它看起來像你沒有初始化'm_doc'任何地方。 – user657267
如果將'm_doc = new xml_document <>();'添加到ctor,則doenst會更改內容。 – BennX
也許不是'm_doc'在你使用它之前,仍然需要指向一些東西。 – user657267