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

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/

10-11 21:54