3
可能重複:
Why do I have to access template base class members through the this pointer?找不到成員
我有一個類層次結構如下所示:
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();
}
的問題是保護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->',所以我無法在重複問題中找到很好的解釋。 –