2

考虑这段代码:

  template <typename T>
  struct X{
     struct Y{
          unsigned i;
     };

    template<typename E>
    struct Z : public Y {

       unsigned foo(){
          return i;
       }
    };


  };

我们有一个X带有嵌套类的类模板YZ. Z又是一个模板并继承自Y. 因此,它也继承了字段i。但是,此代码无法编译。编译说,它无法ifoo(). Z显式前缀iwiththis->解决了这个问题。

如果我删除了外部类型X,则不再需要前缀,并且代码可以正常编译。

为什么this->这里需要这个显式前缀?

4

0 回答 0