c++ 模板template中的class和typename区别

在实际使用中注意以下两点即可。

1,在类外或者方法外添加模板声明时,二者无区别。

2,当template<typename T>或者template<class T>中的T是一个类类型,而且这个类又有子类(假设名为 innerClass) 时,应该用 typename T::innerClass 的方式来声明innerClass变量,比如:

typename T::innerClass myInnerObject;

这里的 typename 告诉编译器,T::innerClass 是一个类,程序要声明一个 T::innerClass 类的对象myInnerObject。如果此时不加typename声明的话,编译器为理解为T中的一个静态成员innerClass,此时报错。在这种情况下,typename 也不能替换成 class 。

猜你喜欢

转载自blog.csdn.net/jigetage/article/details/88732956
今日推荐