gpt4 book ai didi

c++ - 如何赋予这个变量全局作用域

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

在我的头文件中,我有以下内容:

private:
ImagePixmapItem *item;

在函数中,我创建了一个新的 ImagePixmapItem,如下所示:

ImagePixmapItem *item(static_cast<ImagePixmapItem *>(scene.addPixmap(p)));

但是,这会创建项目的本地拷贝。但如果我这样做:

*item(static_cast<ImagePixmapItem *>(scene.addPixmap(p)));

我收到以下错误:

error: ‘((ViewerMain*)this)->ViewerMain::item’ cannot be used as a function

那么调用这个函数的正确方法是什么?

最佳答案

像这样的初始化

item(static_cast<ImagePixmapItem *>(scene.addPixmap(p)));

只允许在变量声明中使用(这实际上是您使用局部变量的第一个示例),或者(对于成员字段)在构造函数初始化列表中:

ViewerMain::ViewerMain() :
item(static_cast<ImagePixmapItem *>(scene.addPixmap(p)))
{
...
}

在成员函数中,只需分配给它:

item = static_cast<ImagePixmapItem *>(scene.addPixmap(p));

(因为它是私有(private)的,所以不能从非成员函数访问它,除非它是该类的友元。)

关于c++ - 如何赋予这个变量全局作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4761957/

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