我正在尝试针对工厂自动注册数据类型。第一个非通用版本有效,但由于工厂已更改为可变参数,因此无法定义注册宏。编译错误是......
错误C4430缺少类型说明符 - 假设为int。不是:C ++确实如此 不支持default-int。
#define GH_FACTORY_GET_LICENSE_FACTORY \
Factory<ILicenseManager, bool>::getFactory();
#define GH_FACTORY_REGISTER_LICENSE_MANAGER( ) \
Factory<ILicenseManager, bool>::getFactory().registerType();
示例1
class A
{
public:
A()
{
Factory<gh::license::ILicenseManager, bool>::getFactory().registerType();
}
~A() {}
};
static class A foo;
示例2
GH_FACTORY_REGISTER_LICENSE_MANAGER;
使用时
GH_FACTORY_GET_LICENSE_FACTORY
和
GH_FACTORY_REGISTER_LICENSE_MANAGER
在它构建的本地范围内,但在使用时
GH_FACTORY_REGISTER_LICENSE_MANAGER
在全局范围内它不构建(看起来类是未定义的?)。有任何想法吗?很想明白为什么会这样。