Użyj typedef / używając klasy bazowej w klasie pochodnej
W dostępie dousing
z klasy bazowej z klasą bazową z szablonami, natrafiłem na problem z gadatliwością, jeśli nic więcej. W poniższym kodzie klasa pochodna próbuje użyćmy_type
z jego klasy bazowej.
template <typename T>
class Base {
public:
using mytype = T;
};
template <typename T>
class Derived : public Base<T>{
public:
// using the base's mytype here
static typename Base<T>::mytype func() { return 0;}
};
Jednak w praktyce stwierdzam, że jest to bardzo dużo postaci, które wydają się prostsze. jeśli klasa podstawowa nie była szablonowana, nie wymagałaby<T>
lub nazwa użytkownika (oczywiście).
W moim prawdziwym problemie mam wiele klas wywodzących się z bazy i chcę to uprościć, jeśli to możliwe. To, co mam w tej chwili, jest jak następny przykład, w którym dodam tylko dodatkowyusing
aby uzyskać typ z klasy bazowej, ale czuję się jak dodatkowa warstwa, której nie powinienem mieć.
template <typename T>
class Derived : public Base<T>{
public:
using base_type = typename Base<T>::mytype;
static base_type func() { return 0;}
};
może to wydawać się głupim problemem, ale ile razy klasa podstawowamytype
jest używany w klasach pochodnych, co czyni go dość ohydnym w pierwszym przypadku. Czy jestdobrze sposób na wydobycie typów z bazy szablonowej, która zachowuje czytelność?