我来自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=‘在..我如何设置指针?”
发布于 2012-11-06 10:07:51
您正在尝试将原始指针赋给行中的QSharedPointer
m_flags = new AccessFlags();你可能想要像这样的东西
m_flags = QSharedPointer<AccessFlags>(new AccessFlags);发布于 2012-11-06 18:40:05
如果你使用现代的QSharedPointer编译器(例如,GCC 4.6或更高版本和MSVC10.0),可以考虑使用std::shared_ptr而不是C++11。
首先,这是标准的,其次,你可以使用std::make_shared来初始化你的指针,这样会更快!(例如,在MSVS2010/2012中,make_shared的分配只发生一次,而不是两次分配:一次用于新计数器,一次用于内部计数器)。
https://stackoverflow.com/questions/13243356
复制相似问题