关于C++模板继承的注意点
我在使用编写Stack类模板的时候,继承了自定义的Vector模板类。
然而在编译的时候出错了。
编译
在编译的时候,一开始使用的VS的编译器,运行正常,没有问题。
当换成gnu的编译器时,编译出错了。
完整错误信息如下:
百思不得其解。看前面的说明是缺少模板实参?
看到后面有个说明:
即 用this->push_back() 代替 push_back()
原来,在使用模板继承的时候,如子类中有调用父类的成员函数和变量的情况,则需要用this来调用,或者使用using声明,否则会导致在G++ 上无法编译通过,错误提示会有如上错误信息。
修改后,调用父类Vector的函数和成员时,都加上了 this-> ,编译通过,运行正常。