gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 00:55:55 24 4
gpt4 key购买 nike

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

ConfigReader::ConfigReader(){
TiXmlDocument doc(CONFIGURATION_FILE_LOCATION);
configDoc = TiXmlHandle(&doc);
}

当我尝试编译时,我收到以下警告:

no matching funciton for call to 'TiXmlHandle::TiXmlHandle();

configDoc 是在我的 h 文件中定义为类的私有(private)变量的 TiXmlHandle。这两个类都来自 TinyXML C++ 项目,但这几乎无关紧要。编译器是正确的,TiXmlHandle 没有默认构造函数。但是,由于我正在使用有效的构造函数构造 TiXmlHandle,因此从理论上讲,这无关紧要。

那么语法是什么(如果有的话)告诉 C++ 不要费心尝试使用默认构造函数创建 TiXmlHandle,因为我只是要覆盖它?

我为这个简单的问题道歉,我知道这是我应该能够查找的东西,但我已经尝试过但无法偶然发现答案。

最佳答案

configDoc 是默认构造的,然后,稍后,您试图将其复制分配给 TiXmlHandle(&doc)TiXmlHandle 显然不能默认构造,所以这是行不通的。默认构造是隐式发生的,因为您没有使用成员初始化列表覆盖它。

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

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

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

关于c++:在构造函数中定义类的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11284397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com