0

作为一个静态类成员变量,它会在程序的早期被实例化。如何使这种情况发生在函数上?我的例子是我有一个工厂类,在使用它之前需要注册类型。而且我希望注册发生在我使用它创建对象之前。

4

1 回答 1

3

通常我们将使用“注册类”类型的构造函数来执行此操作。

“诀窍”是回想一下,当你初始化一个文件static对象时,你——尽管是间接地——调用了一个函数。它是该对象的构造函数。你可以用那个。

注册.h

template <typename T>
class Registration
{
   Registration();
};

#include <registration.ipp>

注册.ipp

template <typename T>
Registration::Registration()
{
   //!! Do your work with `T` here.
}

我的类.h

class MyClass
{
public:
   MyClass();
};

我的类.cpp

#include "myClass.h"
#include "registration.h"

// Static; instantiated once, before `main` runs
Registration<MyClass> reg;

MyClass::MyClass() {}
// ...
于 2013-09-15T20:40:07.530 回答