2

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

在 myClass.h

QSharedPointer<AccessFlags> m_flags;

在 myClass.cpp 我试图设置(设置正确的词?) m_flags 指针

if(m_flags.isNull())
    m_flags = new AccessFlags();


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

编译器抱怨“与'operator ='不匹配..如何设置指针?

4

2 回答 2

5

如果您使用现代 C++11 编译器(例如 GCC 4.6 或更高版本和 MSVC 10.0),请考虑使用std::shared_ptr而不是 QSharedPointer。

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

于 2012-11-06T10:40:04.537 回答
5

您正在尝试将原始指针分配给QSharedPointer行中的a

m_flags = new AccessFlags();

你可能想要类似的东西

m_flags = QSharedPointer<AccessFlags>(new AccessFlags);
于 2012-11-06T02:07:51.110 回答