无法访问QXmlStreamReader的私有成员(operator =)

时间:2015-12-02 10:52:40

标签: c++ qt

我有一个包含多个成员和方法的类。当我尝试添加新成员 - QXmlStreamReader时,我收到了指向课程结尾的错误:

C2248: 'QXmlStreamReader::QXmlStreamReader' : cannot access private member declared in class 'QXmlStreamReader'

简化课程:

class Foo
{
    // multiple methods and class members which until now has been working fine
    QXmlStreamReader stream;
};

我试图使用指针,但这没有帮助。

1 个答案:

答案 0 :(得分:0)

我没有在互联网上找到答案,我想分享我的解决方案因为找到这个有点棘手。在我的代码的某处,我的功能如下:

void bar(Foo a_foo)
{   
    // example use
    a_foo.stream.setDevice(nullptr);
}

函数尝试使用Foo类的COPY,但这不能完成。为什么?因为QXmlStreamReader没有复制构造函数(与QXmlStreamWriter,QFile等相同)或重载的operator =。对此的解决方案是使用对象的引用而不是复制。

void bar(Foo& a_foo) // add reference '&' here!
{   
    // example use
    a_foo.stream.setDevice(nullptr);
}