有时我会看到一些非常难以理解的错误消息gcc
当使用模板时......具体来说,我遇到了一些问题,看似正确的声明导致了非常奇怪的编译错误,通过添加前缀神奇地消失了typename
关键字到声明的开头...(例如,就在上周,我将两个迭代器声明为另一个模板类的成员,我必须这样做)...
讲的是什么故事typename
?
以下是 Josutti 书中的引述:
关键词typename
被介绍给
指定该标识符
接下来是一个类型。考虑
以下示例:
template <class T>
Class MyClass
{
typename T::SubType * ptr;
...
};
Here, typename
用于澄清SubType
是一种class T
. Thus,
ptr
是一个指向类型的指针T::SubType
。没有typename
, SubType
将被视为静态成员。
因此
T::SubType * ptr
将是价值的乘法SubType
类型的T
with ptr
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)