Ben*_*Ben 4 c++ gcc templates scope
您可能已经注意到gcc的更高版本对标准更严格(请参阅此问题)
应使用全名调用模板类的所有继承成员,即.
ParentClass<T>::member而不仅仅是member
但是我仍然有许多不尊重这一点的旧代码.using ParentClass<T>::member为每个类中的每个使用成员添加是非常痛苦的.有办法做点什么using ParentClass<T>::*吗?我希望这比在g ++中停用此检查更好,但如果现在有办法,我该如何停用它?
编辑:
根据C++ FAQ(谢谢......)这些是正确解决继承成员变量名称的唯一方法:
将呼叫从更改f()为this->f().由于这总是隐式依赖于模板,因此this->f是依赖的,因此查询将被推迟,直到模板实际被实例化为止,此时将考虑所有基类.
插入using B<T>::f; 就在打电话之前f().
将呼叫从f()更改为B<T>::f().
所以现在寻找正确的开关来停用全名解析......