在对象的构造函数中,我有以下代码:
ConfigReader::ConfigReader(){
TiXmlDocument doc(CONFIGURATION_FILE_LOCATION);
configDoc = TiXmlHandle(&doc);
}
当我尝试编译时,我收到以下警告:
no matching funciton for call to 'TiXmlHandle::TiXmlHandle();
configDoc
是我的h文件中定义的TiXmlHandle
,作为该类的私有变量。这两个类都来自TinyXML C ++项目,但这几乎不相关。编译器是正确的,TiXmlHandle
没有默认构造函数。但是,由于我使用有效的构造函数构造TiXmlHandle,理论上这应该不重要。
那么告诉C ++不要试图用默认构造函数创建TiXmlHandle
的语法是什么,因为我只是要覆盖它?
我为这个简单的问题道歉,我知道这是我应该能够查找的那种东西,但我已经尝试过但无法找到答案。
答案 0 :(得分:3)
configDoc
正在默认构建,然后,您尝试复制将其分配给TiXmlHandle(&doc)
。 TiXmlHandle
显然不能默认构造,因此这不起作用。默认构造是隐式发生的,因为您没有使用成员初始化列表覆盖它。
您使用成员初始化列表,如下所示:
ConfigReader::ConfigReader()
: configDoc(/*args*/)
{
// ...
}
显然,要将正确的参数传递给该位置的configDoc
,您必须稍微重构一下代码。也许你的TiXmlDocument
也应该是会员。有很多重构选项;你可以自己解决这个问题。