在模板类或者模板函数声明模板参数的内嵌类型时,编译器报错(typename关键字的作用之一)
作者:互联网
项目场景:
在模板编程中,会有这样一种情景。假设在一个模板类中,想申明模板参数的内嵌类型,代码如下:
template<typename T>
struct MyStruct
{
T::EmbedType value;
};
编译器报错:
原因分析:
编译器无法推断“EmbedType”:是数据类型。
解决方案:
在申明变量前面添加typename关键字,成功编译,代码如下:
template<typename T>
struct MyStruct
{
typename T::EmbedType value;
};
标签:MyStruct,EmbedType,typename,编译器,报错,模板 来源: https://blog.csdn.net/weixin_44901043/article/details/123172602