Dar*_*fer 2 c++ qt qsharedpointer
我来自 C# 背景,仍然对 C++ 和 Qt 智能指针有所了解。这应该是一个基本问题:
在 myClass.h 中
QSharedPointer<AccessFlags> m_flags;
Run Code Online (Sandbox Code Playgroud)
在 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
};
Run Code Online (Sandbox Code Playgroud)
编译器抱怨“没有匹配 'operator=' in.. 如何设置指针?
您正在尝试将原始指针分配给QSharedPointer行中的 a
m_flags = new AccessFlags();
Run Code Online (Sandbox Code Playgroud)
你可能想要类似的东西
m_flags = QSharedPointer<AccessFlags>(new AccessFlags);
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您使用现代 C++11 编译器(例如 GCC 4.6 或更高版本和 MSVC 10.0),请考虑使用std::shared_ptr代替 QSharedPointer。
首先,这是一个标准,第二件事,您可以使用std::make_shared来初始化您的指针,这会更快!(例如,在 MSVS2010/2012 中,make_shared 分配只发生一次,而不是两次分配:一次用于新的,一次用于内部计数器)。