问题原文:http://blog.chinaunix.net/uid-20416869-id-3092552.html
也可参考数据结构 07节
问题总结:
c++ 两阶段名字查找,对于非依赖模板名称的都是现场决议的,编译器不查找基类 scope,没找到就报错,编译器不查找基类,因为此时基类还是个类模板,到底是什么东西还不定呢。
然后实例化的时候进行第二阶段名字查找,这时候所有类型都是确定的,才能够查找基类 scope。
增加 this 或 Base:: 就是把对 function 的查找延迟到第二阶段,这是 c++ 标准规定的。
参考: