使用BlackBerry 10 Cascades,我创建了一个类:
MyClass : public QObject
{
QObject
public:
MyClass(const bb::cascades::NavigationPane & navigationPane);
//...
protected:
bb::cascades::NavigationPane m_navigationPane;
在ccp文件中,我在构造函数中有这个:
MyClass::MyClass(const bb::cascades::NavigationPane & navigationPane)
{
m_navigationPane = navigationPane;
当我构建时,它给了我错误:
'bb::cascades::NavigationPane& bb::cascades::NavigationPane::operator=(const bb::cascades::NavigationPane&)' is private
答案 0 :(得分:3)
在不知道该类的情况下,很明显它无法复制。错误消息非常明确:其复制赋值运算符是私有的。这通常是为了避免复制而故意进行的。
从它的名字我想它代表了一个真正的资源;复制对象没有任何意义,因为资源是唯一的。
我知道你需要的是你在构造函数中得到的对象。假设它将持续与您使用它创建的MyClass
实例一样长,您可以在类中使用引用成员。这只能在构造函数的初始化列表中初始化,这样:
MyClass : public QObject
{
QObject
public:
MyClass(const bb::cascades::NavigationPane & navigationPane);
//...
protected:
const bb::cascades::NavigationPane& m_navigationPane;
然后构造函数将是:
MyClass::MyClass(const bb::cascades::NavigationPane & navigationPane)
: m_navigationPane(navigationPane)
{
// m_navigationPane = navigationPane;
当然,如果你需要从NavigationPane
对象中实际修改MyClass
实例,你只需要使用非const引用,一切都会正常工作。