为什么我们需要将其放在模板基类变量的前面?

时间:2018-07-17 17:34:07

标签: c++

#include <iostream>

struct Writer{

  virtual void nowWrite()=0;

};

struct Pen : Writer{
  void nowWrite(){
   //
   std::cout << "Writing with pen"<< std::endl;

  }
};


struct Marker : Writer{
  void nowWrite(){
   //
   std::cout << "Writing with marker"<< std::endl;
  }
};

template<class T>
struct A{


 T t;

};

template<class T>
struct B: public A<T>{

 void DoStuff(){
   this->t.nowWrite(); // gives error if there is no this->
 }


};

int main(){

  B<Pen> b;

  b.DoStuff();
}

我试图了解使用this访问基类变量(从派生类访问它们)的背后原因是什么。为什么编译器无法确定我要访问的内容。

如果我不使用它,我会得到一个错误

  

test_tpv.cpp:在成员函数“ void B :: DoStuff()”中:   test_tpv.cpp:37:4:错误:在此范围内未声明“ t”       t.nowWrite();

0 个答案:

没有答案