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ść?

questionAnswers(2)

yourAnswerToTheQuestion