I'm pretty bad with this, but here's my guess: What if B had
multiple templates, i.e., A, C, D, and E, which each had their own
i? Compiler needs to know where to go. Someone else might have a
better technical explanation (or maybe I'm wrong altogether!).
Blake
On May 9, 2006, at 6:27 AM, Leon Pollak wrote:
Hello, all.
I shall be very thankful for the help with the following compilation
problem. The code example is:
template <typename T>
class A {
protected: int i;
};
template <typename T>
class B : public A<T> {
public: B() {i = 0;}
};
My gcc version 4.0.2 20051125 (Red Hat 4.0.2-8) produces:
error: 'i' was not declared in this scope. Writing:
public: B() {A<T>::i = 0;}
solves the problem, but why do I need to specify this? Isn't it
obvious?
Many thanks ahead.
Leon.
Blake Huff
stangmechanic@xxxxxxxxx
![GIF image](gifX7SupqqtRb.gif)