在类中使用 libxml++

Using libxml++ in classes

本文关键字:libxml++      更新时间:2023-10-16

我正在尝试编写一个类来解析XML文档。这是头文件:

using namespace std;
class xmlHelper {
public:
    xmlHelper();
    virtual ~xmlHelper();
private:
    xmlpp::DomParser parser;
    };

代码如下所示:

#include "xmlHelper.h"
xmlHelper::xmlHelper()
{
}
xmlHelper::~xmlHelper() 
{
}

编译失败,并显示以下错误:

error: use of deleted function ‘xmlHelper::xmlHelper(const       xmlHelper&)’ 
error: use of deleted function ‘xmlpp::Parser::Parser(const xmlpp::Parser&)’ 
error: use of deleted function ‘xmlpp::NonCopyable::NonCopyable(const xmlpp::NonCopyable&)’

将行xmlpp::DomParser parser;从头文件移动到构造函数,代码将编译。我想使用一个保存 XML 文档的私有变量。我该怎么做才能创建这样的变量?

感谢

你的类可能正在某个地方被复制(std::vector containee?(,并且xmlpp::Parser对象不允许复制。

当您有一个允许复制/移动的类

时,该类中的所有成员都必须具有未删除的复制/移动构造函数或运算符 =s(默认或显式定义,但未删除(。

请改用std::shared_ptr<xmlpp::Parser>