首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置QSharedPointer

设置QSharedPointer
EN

Stack Overflow用户
提问于 2012-11-06 10:06:26
回答 2查看 6.2K关注 0票数 2

我来自C#的背景,并且仍然对c++和Qt智能指针有一定的了解。这应该是一个基本问题:

在myClass.h中

代码语言:javascript
复制
QSharedPointer<AccessFlags> m_flags;

在myClass.cpp中,我正在尝试设置(是否设置了正确的单词?)m_flags指针

代码语言:javascript
复制
if(m_flags.isNull())
    m_flags = new AccessFlags();


class AccessFlags{
public:
     QHash<QString,int> flags;
     AccessFlags();  //The dictionary is setup in the constructor
};

编译器报错“没有匹配的'operator=‘在..我如何设置指针?”

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-06 10:07:51

您正在尝试将原始指针赋给行中的QSharedPointer

代码语言:javascript
复制
m_flags = new AccessFlags();

你可能想要像这样的东西

代码语言:javascript
复制
m_flags = QSharedPointer<AccessFlags>(new AccessFlags);
票数 5
EN

Stack Overflow用户

发布于 2012-11-06 18:40:05

如果你使用现代的QSharedPointer编译器(例如,GCC 4.6或更高版本和MSVC10.0),可以考虑使用std::shared_ptr而不是C++11。

首先,这是标准的,其次,你可以使用std::make_shared来初始化你的指针,这样会更快!(例如,在MSVS2010/2012中,make_shared的分配只发生一次,而不是两次分配:一次用于新计数器,一次用于内部计数器)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13243356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档