c++ - 通过类模板的特化获取类类型的名称
问题描述
我试图通过它的定义来设置name
模板类的变量。A
我受到这个答案的启发。我当前的文件如下所示:
头文件
namespace N {
// Definition of class A
template <class T> class A {
public:
A();
static const char* name;
}
/*1*/ #define REGISTER_TYPE(T) template <> class N::A<T>::name = #T;
}
源文件
namespace N {
template<class T>
A<T>::A()
{
//empty constructor
}
}
REGISTER_TYPE(N::MyOtherClass);
但不知何故,错误消息'name' in 'class N::A<N::MyOtherClass>' does not name a type
和expected unqualified-id before '=' token
(行/*1*/
)弹出,但具有此名称的变量存在。
我正在使用 C++17。我已经尝试过
我在哪里做错了?
谢谢你的帮助!
//编辑:
在评论中解决。结果是:
#define REGISTER_TYPE(T) template <> const char * N::A<T>::name = #T;
解决方案
推荐阅读
- spring - Spring Boot RestTemplate ResourceAccessException:POST 请求上的 I/O 错误无法响应
- python - MySQL 'replace into select from' 替代方案
- dart - Flutter 停用屏幕超时
- c# - ASP.Net 分阶段升级网站
- java - 为什么 write() 控制台输出返回一个字符
- html - 在键盘上切换时展开子菜单
- sql - 我想将这 4 个存储过程合并为一个,因为它们都返回相同的数据(几乎)
- typescript - 类型 '{ 市场:[市场]; 上不存在属性“市场”;在打字稿中
- php - woocommerce多个自定义字段代码
- c# - System.Tuple 和 (,) 有什么区别?