как вызвать статическую функцию-член внутри файла cpp - PullRequest
0 голосов
/ 06 января 2012

Мне интересно, могу ли я вызывать статическую функцию-член внутри cpp-файла, например:

А *

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

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

private:
static SomeType* g_pSomeType;
};

Acpp

#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 ]

1 голос
/ 06 января 2012

Вы не можете писать исполняемый код вне тела функции.Вы можете вызвать A::Initialize() (или любой другой вызов функции / метода) только в том случае, если вы находитесь внутри функции или метода ...

Компилятор считает, что вы объявляете A::Initialize() снова вместо того, чтобы называть это.

0 голосов
/ 06 января 2012

Вы можете вызвать initialize() из конструктора (возможно, если он не был вызван ранее).

...