所以我希望能够在初始化时调用一个函数。这是一个 void 函数,但我希望副作用(在本例中为更新工厂函数表)在main()
调用时到位。现在我正在做的只是返回一个 int 并用它初始化一个静态变量:
//Factory inherits from FactoryBase
class FactoryBase
{
...
private:
static std::unordered_map<std::string, FactoryBase*> factoryTable;
public:
template<class C>
static int addClass(const std::string& name)
{
factoryTable[name] = new Factory<C>;
return 0;
}
};
...
int Foo::uselessStaticInt = FactoryBase::addClass<Foo>("foo");
//class Foo is now associated with the string "foo"
有没有一种方法可以在不需要静态 int 的情况下调用静态函数?
我可以发布 Factory 类的完整源代码,但我更感兴趣的是编译时或初始化时函数调用