具有静态可变参数的宏缺失类型说明符

时间:2017-09-11 11:34:48

标签: c++11 templates macros variadic

我正在尝试针对工厂自动注册数据类型。第一个非通用版本有效,但由于工厂已更改为可变参数,因此无法定义注册宏。编译错误是......

  

错误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

在全局范围内它不构建(看起来类是未定义的?)。有任何想法吗?很想明白为什么会这样。

0 个答案:

没有答案