【问题标题】:import all variables of parent class导入父类的所有变量
【发布时间】:2010-10-14 22:41:41
【问题描述】:

您可能已经注意到,更高版本的 gcc 对标准更加严格 (see this question)

模板类的所有继承成员都应该使用全名来调用,即。 ParentClass<T>::member 而不仅仅是 member

但我仍然有很多不尊重这一点的旧代码。为每个班级中的每个使用过的成员添加using ParentClass<T>::member 非常痛苦。有没有办法做类似using ParentClass<T>::* 的事情?我希望这比在 g++ 中停用此检查更好,但如果现在有办法,我该如何停用它?

编辑

根据 C++ FAQ(谢谢),这些是正确解决继承的成员变量名称的唯一方法:

  1. 将呼叫从 f() 更改为 this->f()。由于在模板中这始终是隐式依赖的,this->f 是依赖的,因此查找会延迟到模板实际实例化,此时会考虑所有基类。

  2. 插入using B<T>::f;就在致电f() 之前。

  3. 将调用从 f() 更改为 B<T>::f()

所以现在正在寻找正确的开关来停用全名解析...

【问题讨论】:

    标签: c++ gcc templates scope


    【解决方案1】:

    不是你问题的真正答案,而是你 can also write this->member 而不是 ParentClass<T>::member。这通常更容易编写,并使编译器在正确的位置查找member

    【讨论】:

      猜你喜欢
      • 2012-08-21
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多