我正在尝试创建一个导出创建方法的模板化工厂类:
template <typename T>
class ClassFactory
{
_declspec(dllexport) static void* Create()
{
return new T;
}
};
class Foobar : ClassFactory<Foobar>
{
std::string foo;
};
这段代码编译得很好,但是当我查看dumpbin /exports的输出时,我在导出表中看不到任何内容
以下代码正确导出 Create():
class ClassFactoryBase
{
_declspec(dllexport) virtual void* Create() = 0;
};
template <typename T>
class ClassFactory : ClassFactoryBase
{
void* Create()
{
return new T;
}
};
class Foobar : ClassFactory<Foobar>
{
std::string foo;
};
但是,我需要 Create() 是静态的。为什么样品 2 有效,而样品 1 无效?有没有办法导出静态模板方法?