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