在 类 中使用 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>
。
我正在尝试编写 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>
。