如何以QString为成员变量初始化QXMLStreamWriter
How to initialize QXmlStreamWriter with QString as member variable?
我已经实现了自己的XML作者来生成XML作为QString。
我使用私有成员变量为QXMLStreamWriter创建了一个" myxmlWriter"类,并尝试在公共方法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(& resust(无匹配。*
如果在本地方法 writeToString((中声明 qxmlStreamWriter Writer ,那么我无法访问私有方法中的作者 writepart(( 我想在其他方法中使用成员变量"作者",这就是为什么本地声明对我来说不是一个选择。
您必须为变量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;
}
相关文章:
- 为什么C++有不同的变量初始化方式?
- 静态 constexpr 成员变量初始化
- C++不同的变量初始化
- 全局和局部变量初始化与 constexpr 的差异背后的基本原理
- 是变量初始化失败吗?
- 视觉C++:在 DLL 加载期间,全局变量初始化顺序是否具有确定性?
- 类静态变量初始化顺序
- 使用 constinit 变量初始化 constexpr 变量
- 是否可以在不修改父类的情况下将成员变量初始化推迟到继承的类?
- 使用全局变量初始化不同编译单元中的其他全局变量
- 使用默认构造函数引用成员变量初始化错误
- 宏的 if 语句中的变量初始化
- 不稳定的C :每行适应性变化多变量初始化
- 同一函数中的静态函数变量初始化顺序
- C 语言中的静态变量初始化
- 错误:调用'begin(long double [nPoints])'没有匹配函数;使用硬编码的 int 与整数变量初始化向量
- 类POD成员变量初始化
- 尝试捕获类变量初始化的范围
- 共享库中 __attribute__((构造函数)) 的全局/静态变量初始化问题
- 多变量初始化编译器支持