在 类 中使用 libxml++

Using libxml++ in classes

我正在尝试编写 class 来解析 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 文档。我需要做什么才能创建这样的变量?

感谢

您的 class 可能正在某处复制(也许是 std::vector containee?)并且 xmlpp::Parser 对象不允许复制。

当你有一个允许 copying/moving 的 class 时,class 中的所有成员都必须具有未删除的 copy/move 构造函数或运算符 =s(要么默认或明确定义,但未删除)。

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