テンプレート化された基本クラスを使用して基本クラスから にアクセスする際に、using
冗長性の問題に遭遇しました。my_type
以下のコードでは、派生クラスがその基本クラスの を使用しようとしています。
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;}
};
ただし、実際には、これは非常に多くの文字であることがわかりました。Base クラスがテンプレート化されていない場合は、<T>
または typename は必要ありません (明らかに)。
私の本当の問題では、ベースから派生したクラスが大量にあり、可能であればこれを簡素化したいと考えています。現時点で私が持っているのは、次の例のようなものです。ここではusing
、基本クラスから型を取得するために追加を追加しているだけですが、必要のない余分なレイヤーのように感じます.
template <typename T>
class Derived : public Base<T>{
public:
using base_type = typename Base<T>::mytype;
static base_type func() { return 0;}
};
これはばかげた問題のように思えるかもしれませんが、基本クラスが派生クラスで何度もmytype
使用されているため、前者の場合はかなり厄介です。読みやすさを維持するテンプレート化されたベースから型を取得する正しい方法はありますか?