gpt4 book ai didi

c++ - 传递 NavigationPane 的 const 引用会导致错误

转载 作者:行者123 更新时间:2023-11-30 02:57:44 25 4
gpt4 key购买 nike

使用 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&)' 是私有(private)的

最佳答案

在不知道那个类的情况下,显然是无法复制的。错误信息很清楚:它的复制赋值运算符是私有(private)的。这通常是有意避免复制的。

从它的名字我猜它代表了一个真正的资源;复制对象毫无意义,因为资源是唯一的。

我知道您真正需要的是您在构造函数中获得的对象。假设它的持续时间与您使用它创建的 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;

当然,如果您需要实际修改 MyClass 对象内部的 NavigationPane 实例,您只需使用非 const 引用,一切都会正常进行。

关于c++ - 传递 NavigationPane 的 const 引用会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14264248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com