如何在程序的早期运行一次函数?

时间:2013-09-15 20:27:52

标签: c++

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

1 个答案:

答案 0 :(得分:3)

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

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

registration.h

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

#include <registration.ipp>

registration.ipp

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

myClass.h

class MyClass
{
public:
   MyClass();
};

myClass.cpp

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

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

MyClass::MyClass() {}
// ...