I tried to inherit a base class (meter) with template to a derived class (kilometer) with same template. I get error when trying to access the base class protected member in derived class .
template <class Q>
class meter
{
protected:
Q mtr;
public:
meter();
meter(Q m);
virtual void convert() = 0;
};
template <class Q>
class kilometer : public meter<Q>
{
protected:
Q km;
public:
kilometer();
kilometer(Q m);
void convert();
void print();
};
template <class Q>
meter<Q>::meter()
{
mtr = 0;
}
template<class Q>
meter<Q>::meter(Q m){
mtr = m;
}
template <class Q>
kilometer<Q>::kilometer(Q m): meter<Q>(m)
{
km = 0;
this->convert();
}
template <class Q>
void kilometer<Q>::convert()
{
while ( mtr >= 1000){
mtr -= 1000;
km++;
}
}
template <class Q>
void kilometer<Q>::print()
{
cout << "kilometer : " << km << endl;
cout << "meter : " << mtr << endl;
}
mtr is a data member of base class , but when i tried to access meter in derived class it shows "mtr not declared "
ERROR
error: ‘mtr’ was not declared in this scope; did you mean ‘meter’?
28 | while (mtr >= 1000){
help me to overcome this error, error comes during compliation time.