[英]c++: issue defining a class in a constructor
在对象的构造函数中,我具有以下代码:
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
。 但是,由于我正在使用有效的构造函数来构造TiXmlHandle,因此从理论上讲这并不重要。
那么,有什么语法要告诉C ++不要费心尝试使用默认构造函数创建TiXmlHandle
,因为我只是要重写它?
我为这个简单的问题表示歉意,我知道这是我应该可以查看的内容,但是我已经尝试过并且不能偶然发现答案。
configDoc
是默认构造的,然后,稍后,您尝试将其复制到TiXmlHandle(&doc)
。 TiXmlHandle
显然不能默认构造,因此不起作用。 默认构造是隐式发生的,因为您尚未通过使用成员初始化列表来覆盖它。
您可以这样使用成员初始化列表:
ConfigReader::ConfigReader()
: configDoc(/*args*/)
{
// ...
}
显然,要在该位置将正确的参数传递给configDoc
,您将不得不重新configDoc
代码。 也许您的TiXmlDocument
应该是成员。 有很多重构选项。 您可以自己弄清楚这部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.