在我的头文件中,我具有以下内容:
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)的,因此不能从非成员函数访问它,除非它是该类的 friend 。)
关于c++ - 如何赋予这个可变的全局范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4761957/