C++:在构造函数中定义类的问题

c++: issue defining a class in a constructor

本文关键字:问题 定义 构造函数 C++      更新时间:2023-10-16

在对象的构造函数中,我有以下代码:

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,因为我只是要覆盖它?

对于这个简单的问题,我深表歉意,我知道这是我应该能够查找的那种东西,但我已经尝试过,但无法偶然找到答案。

configDoc

默认构造的,然后,稍后,您尝试复制将其分配给TiXmlHandle(&doc)TiXmlHandle显然不能默认构造,因此这不起作用。默认构造是隐式发生的,因为您尚未使用成员初始化列表重写它。

您可以像这样使用成员初始化列表:

ConfigReader::ConfigReader()
    : configDoc(/*args*/)
{
    // ...
}

显然,要将正确的参数传递给该位置的configDoc,您必须稍微重组代码。也许您的TiXmlDocument也应该成为会员。有很多重构选项;你可以自己弄清楚那部分。