代码之家  ›  专栏  ›  技术社区  ›  ezod

类模板的公共继承意外失败

  •  1
  • ezod  · 技术社区  · 6 年前

    为什么下面的失败 error: 'a_' was not declared in this scope Bar::get() ?

    template <typename N>
    class Foo
    {
    public:
      Foo() { }
    
    protected:
      N a_;
    };
    
    template <typename N>
    class Bar : public Foo<N>
    {
    public:
      Bar() : Foo<N>() { }
    
      N get() { return a_; }
    };
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Saher Ahwal    6 年前

    你需要使用参考资料 this->_a

    N get() { return this->a_; }