我有以下代码:
///A.h///
namespace mySpace
{
class A
{
public:
A();
static void registerFunc(QString type, FcnPtrType ptr);
private:
static QHash<QString, FcnPtrType> myFunctions;
}
////A.cpp///
namespace mySpace
{
QHash<QString, FcnPtrType> A::myFunctions;
A::A()
{
cout << "size during construction " << myFunctions.size();
}
void A::registerFunc(QString type,FcnPtrType ptr)
{
myFunctions[type] = ptr;
cout << "size during registration " << myFunctions.size();
}
}
创建A类的任何对象之前都会调用registerFunc。在寄存器功能内,qhash mFunctions
的大小为预期的1。但是,当创建该类的对象(第一个也是唯一的对象)时,其大小等于0。因此,输出>>
size during registration 1 size during construction 0
我期望构造函数中的大小保持不变,因为静态数据成员已经被初始化。我想念什么?
我有以下代码:///A.h///名称空间mySpace {类A {公共:A();静态无效registerFunc(QString类型,FcnPtrType ptr);私人:静态QHash
您的代码将无法编译,因为名称空间的{
未关闭。但是即使那样,我也无法重现您所描述的问题。参见this example-我只是用一个整数替换了哈希图。
如Slava所述,张贴适当的可复制示例可能会有所帮助。