C++ 如何在cpp文件中调用静态成员函数

C++ 如何在cpp文件中调用静态成员函数,c++,static-methods,C++,Static Methods,我想知道是否可以调用cpp文件中的静态成员函数,如下所示: A.h class A { public: A(){} virtual ~A(){} static void Initialize(){ g_pSomeType = new SomeType();} private: static SomeType* g_pSomeType; }; A.cpp #include "A.h" SomeType* A::g_pSomeType = nullptr; A::Initialize();

我想知道是否可以调用cpp文件中的静态成员函数,如下所示:

A.h

class A
{
public:
A(){}
virtual ~A(){}

static void Initialize(){ g_pSomeType = new SomeType();}

private:
static SomeType* g_pSomeType;
};
A.cpp

#include "A.h"

SomeType* A::g_pSomeType = nullptr;

A::Initialize(); //here I get an error: "Initialize may not be redeclared outside of it's class"

有可能这样做吗?这样我就可以初始化类的.cpp文件中的静态成员,以避免用户必须首先调用initialize()?我想我可以找到解决这个问题的办法,但我很好奇是否有办法让这个办法奏效。谢谢。

您可以从构造函数调用
initialize()
(如果以前没有调用过的话)。

您不能在函数体之外编写任何可执行代码。只有在函数或方法内部,才能调用
A::Initialize()
(或执行任何其他函数/方法调用)


编译器认为您是再次声明而不是调用它。

问题是,实际上我的类A是从类B继承的。类B的构造函数类似于B(SomeType*pSomeType);因此A的构造函数应该调用B的构造函数,g_pSomeType已经指向分配的对象。所以我必须在调用B的构造函数之前分配对象,这是不可能的?