作为静态类成员变量,它将在程序的早期实例化。如何在一个函数上发生这种情况?我的例子是我有一个工厂类,在使用它之前需要寄存器类型。我希望注册发生的时间早于我用它来创建一个对象。
答案 0 :(得分:3)
通常我们将使用“注册类”类型的构造函数来执行此操作。
“诀窍”是回想一下,当你初始化一个文件 - static
对象时,你 - 虽然间接地 - 调用一个函数。它是该对象的构造函数。你可以使用它。
template <typename T>
class Registration
{
Registration();
};
#include <registration.ipp>
template <typename T>
Registration::Registration()
{
//!! Do your work with `T` here.
}
class MyClass
{
public:
MyClass();
};
#include "myClass.h"
#include "registration.h"
// Static; instantiated once, before `main` runs
Registration<MyClass> reg;
MyClass::MyClass() {}
// ...