Use typedef / using da classe base modelada na classe derivada
Ao acessar umusing
a partir de uma classe base com uma classe base modelada, eu me deparo com um problema com verbosidade, se nada mais. No código abaixo, a classe derivada tenta usar omy_type
da sua classe base.
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;}
};
No entanto, na prática, estou achando que isso é um monte de personagens para o que parece ser mais simples. se a classe Base não fosse modelada, não exigiria a<T>
ou o nome do tipo (obviamente).
No meu problema real, tenho uma grande quantidade de classes derivadas da base e quero simplificar isso, se possível. O que eu tenho no momento é como o próximo exemplo, onde eu estou apenas adicionando um adicionalusing
para obter o tipo da classe base, mas parece uma camada extra que eu não deveria precisar.
template <typename T>
class Derived : public Base<T>{
public:
using base_type = typename Base<T>::mytype;
static base_type func() { return 0;}
};
isso pode parecer um assunto bobo, mas o número de vezes que a classe basemytype
é usado nas classes derivadas torna muito hediondo no primeiro caso. Tem algumacerto maneira de obter os tipos fora da base de modelo que mantém a legibilidade?