C++OOP2-ex.cpp 编译不过
Katerhong opened this issue · 4 comments
C++OOP2-ex.cpp:61:20: error: declaration of template parameter âTâ shadows template parameter
C++OOP2-ex.cpp:61:20: error: declaration of template parameter âTâ shadows template parameter
我可以成功编译。
如果需要帮助,您可以提供更多信息,包括编译环境和更多的编译提示信息。:yum:
我编译的时候出现如下错误:
C++OOP2-ex.cpp:61:20: error: declaration of template parameter âTâ shadows template parameter
61 | template
| ^~~~~~~~
C++OOP2-ex.cpp:60:10: note: template parameter âTâ declared here
60 | template<typename T,
| ^~~~~~~~
C++OOP2-ex.cpp:95:20: error: declaration of template parameter âTâ shadows template parameter
95 | template
| ^~~~~~~~
C++OOP2-ex.cpp:94:10: note: template parameter âTâ declared here
94 | template<typename T,
我的环境是:
gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)
谢谢您的答复。
感觉像是乱码导致的问题.
参考视频“C++面向对象高级编程下-12.模板模板参数”,报错的61行和95行定义了一个“模板模板参数”,这里重复使用了 T
作为模板参数,导致了对 T
的重复声明,因此编译报错。
参见stackoverflow上的这篇问答,VC++不会将此视为一个错误(正是我此前测试使用的编译器),而 clang(MacOS) 和 gcc 将编译报错。
我更新了这里的定义:修改为 template <typename TT>
。因为这里的目的是为了指明模板参数 Container
本身也是一个模板类,参数 TT
实际上并没有用到,因此用什么名称都无所谓。