我想知道我是否可以在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()?我想我可以找到解决这个问题的方法,但我很好奇是否有办法让这个工作。感谢。
答案 0 :(得分:1)
您无法在函数体外编写任何可执行代码。只有当你在函数或方法中时才能调用A::Initialize()
(或执行任何其他函数/方法调用)...
编译器认为你再次声明 A::Initialize()
而不是调用它。
答案 1 :(得分:0)
你可以从构造函数中调用initialize()
(也许如果以前没有调用过它)。