繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM