QXmlStreamWriter如何初始化QString为成员变量?
How to initialize QXmlStreamWriter with QString as member variable?
我已经实现了我自己的 xml 编写器来生成 xml 作为 QString。
我已经创建了一个 class "MyXmlWriter" 私有成员变量作为 QXmlStreamWriter 并尝试在 public 方法 writeToString()
中初始化它
在声明头文件中:
class MyXmlWriter {
public:
MyXmlWriter();
~MyXmlWriter();
QString writeToString();
private:
QXmlStreamWriter writer;
void writePart();
}
在 cpp 文件中:
void MyXmlWriter::writePart() {
// i want to use the QXmlStreamWriter instance hier
}
QString MyXmlWriter::writeToString(){
QString result;
writer(&result); // at this became the error: no match for call to '(QXmlStreamWriter) (QString*)'
xmlWriter.setAutoFormatting(true);
// private method called
writePart();
return result;
}
构建时出现此错误:
错误:对 (QXmlStreamWriter) (QString) writer(&result) 的调用不匹配; *
如果 QXmlStreamWriter write 在本地方法 writeToString() 中声明,那么我无法在私有方法中访问此编写器 writePart()
我想在其他方法中使用成员变量 "writer",这就是为什么局部声明不适合我的原因。
您必须为变量 writer
分配一个新对象,如下所示:
QString MyXmlWriter::writeToString() {
QString result;
writer = QXmlStreamWriter(&result); // will not compile
return result;
}
这段代码是危险的。 result
在 writeToString()
结束时被破坏,所以 writer
包含无效数据,你不能再用了。
此外,QXmlStreamWriter
无法复制,因此可能根本无法编译。最好将 QXmlStreamWriter
传递给您的方法,如下所示:
class MyXmlWriter {
public:
MyXmlWriter();
~MyXmlWriter();
QString writeToString();
private:
void writePart(QXmlStreamWriter &writer);
}
和
QString MyXmlWriter::writeToString() {
QString result;
QXmlStreamWriter writer(&result);
writePart(writer);
writePart(writer);
return result;
}
我已经实现了我自己的 xml 编写器来生成 xml 作为 QString。
我已经创建了一个 class "MyXmlWriter" 私有成员变量作为 QXmlStreamWriter 并尝试在 public 方法 writeToString()
中初始化它在声明头文件中:
class MyXmlWriter {
public:
MyXmlWriter();
~MyXmlWriter();
QString writeToString();
private:
QXmlStreamWriter writer;
void writePart();
}
在 cpp 文件中:
void MyXmlWriter::writePart() {
// i want to use the QXmlStreamWriter instance hier
}
QString MyXmlWriter::writeToString(){
QString result;
writer(&result); // at this became the error: no match for call to '(QXmlStreamWriter) (QString*)'
xmlWriter.setAutoFormatting(true);
// private method called
writePart();
return result;
}
构建时出现此错误: 错误:对 (QXmlStreamWriter) (QString) writer(&result) 的调用不匹配; *
如果 QXmlStreamWriter write 在本地方法 writeToString() 中声明,那么我无法在私有方法中访问此编写器 writePart() 我想在其他方法中使用成员变量 "writer",这就是为什么局部声明不适合我的原因。
您必须为变量 writer
分配一个新对象,如下所示:
QString MyXmlWriter::writeToString() {
QString result;
writer = QXmlStreamWriter(&result); // will not compile
return result;
}
这段代码是危险的。 result
在 writeToString()
结束时被破坏,所以 writer
包含无效数据,你不能再用了。
此外,QXmlStreamWriter
无法复制,因此可能根本无法编译。最好将 QXmlStreamWriter
传递给您的方法,如下所示:
class MyXmlWriter {
public:
MyXmlWriter();
~MyXmlWriter();
QString writeToString();
private:
void writePart(QXmlStreamWriter &writer);
}
和
QString MyXmlWriter::writeToString() {
QString result;
QXmlStreamWriter writer(&result);
writePart(writer);
writePart(writer);
return result;
}