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

时间:2012-01-05 21:44:09

标签: 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(); //here I get an error: "Initialize may not be redeclared outside of it's class"

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

2 个答案:

答案 0 :(得分:1)

您无法在函数体外编写任何可执行代码。只有当你在函数或方法中时才能调用A::Initialize()(或执行任何其他函数/方法调用)...

编译器认为你再次声明 A::Initialize()而不是调用它。

答案 1 :(得分:0)

你可以从构造函数中调用initialize()(也许如果以前没有调用过它)。