3
가능한 중복 :회원을 찾을 수 없습니다
이template<typename T> class Base { protected: T t; }; template<typename T> class Derived: public Base<T> { public: T get() { return t; } }; int main() { Derived<int> d; d.get(); }
이 문제가 보호됩니다 :
Why do I have to access template base class members through the this pointer?
내가 다음과 같은 클래스 계층 구조를 가지고 member variable t is not found in the Base class. 컴파일러 출력 :
prog.cpp: In member function 'T Derived<T>::get()':
prog.cpp:10:22: error: 't' was not declared in this scope
올바른 컴파일러 동작입니까 아니면 컴파일러 버그입니까? 그것이 맞다면, 왜 그렇습니까? 가장 좋은 해결 방법은 무엇입니까? 완전한 이름을 사용
는작동하지만, 불필요하게 자세한 것 같다 :
T get() { return Base<T>::t; }
'this->'를 사용해야합니다. 이것은 내가 믿는 복제품입니다. – Pubby
감사합니다. 나는'this->'를 사용할 필요가 있다는 것을 몰랐다. 그래서 나는 이중 질문에서 아주 좋은 설명을 찾을 수 없었다. –