Potrzebuję wyjaśnienia na temat, dlaczego potrzebujemy operatora zakresu rozdzielczości lub wskaźnika this
, aby uzyskać dostęp do dziedziczonych użytkowników z szablonu klasy bazowej. Jak rozumiem, jest to dodanie jasności, ale w takim razie, w jaki sposób this
dodaje jeszcze jedną klarowność, niż tylko wskazuje, że jest członkiem klasy.Dostęp do dziedziczonych elementów danych szablonu szablonów
Aby moje pytanie było bardziej przejrzyste, dodałem kod.
#include <iostream>
using namespace std;
template <class T, class A>
class mypair {
public:
T a, b;
public:
mypair (T first, T second)
{a=first; b=second;}
virtual void printA()
{
cout<<"A"<<a<<endl;
cout<<"B"<<b<<endl;
}
};
template <class T, class A>
class next: mypair<T,A>
{
public:
next (T first, T second) : mypair<T,A>(first, second)
{
}
void printA()
{
cout<<"A:"<<mypair<T,A>::a<<endl; // this->a; also works
cout<<"B:"<<mypair<T,A>::b<<endl; // this-b; also works
}
};
int main() {
next<double,float> newobject(100.25, 75.77);
newobject.printA();
return 0;
}
wyjściowa:
A:100.25
B:75.77
jeśli usunąć ten zakres (lub operator) to z błędu zakres pochodzi. Ale dlaczego potrzebujemy zakresu dla publicznie dziedziczonych członków.
Kilka myśli na ten temat byłoby świetnie.
Interesujący przeczytaj Czy jest to przypadek specjalny z szablonami? – Sii
Tylko w funkcjach w klasie szablonu. –