我正在尝试生成template struct的许多定义

#define REGISTER_FUNCTOR(type, func) \
  template <OWNER> \
  struct writeCharFunctor { \
    void operator(PropInfoType::iterator& it, PdxWriterPtr pw)() { \
      MemberProperty<OWNER,type> *ptr = (MemberProperty<OWNER, type> *)it->second; \
      const char *propertName = ptr->m_propertyName.c_str(); \
      if ( !ptr->m_getterFn ) { \
        throw; \
      } \
      pw->###func(propertName,(pOwner->*(ptr->m_getterFn))()); \
    } \
  };

  REGISTER_FUNCTOR(char,writeChar);


但是我收到编译器错误error C2061: syntax error : identifier 'OWNER'
我的函数名称因每种类型而异,因此不能直接使用模板参数(或有方法可以这样做)

最佳答案

应该是template <class OWNER>template <typename OWNER>

关于c++ - 宏以生成模板定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13263881/

10-12 15:59