class B
から継承するクラスA
では、次のように、using
宣言を使用してのメンバーA
をB
、さらにはテンプレートに含めることができます。
struct A {
template <typename T>
void foo();
};
struct B : private A {
using A::foo;
};
しかし、それは変換テンプレートに対して行うことができますか?
struct A {
template <typename T>
operator T();
};
struct B : private A {
using A::operator /* ??? */;
};
テンプレートを名前で参照する方法はないようですが、間違っていることが判明するか、説明が必要です。
1
ユースケースは何ですか?
—
R Sahu
@RSahuおそらくパブリック継承を必要とせずに変換コンストラクタを継承します。
—
Ayjay、
@Ayjay、そうだとすれば、
—
R Sahu
private
継承の使用はよく考えられていません、IMO。
@RSahu Ayjayは正しいです。具体的には、私はいくつかのクラスを許可したい
—
リンゴ
C
から継承しB
ますが、C
アクセスしていないはずA
の保護方法を。ただし、A
この変換演算子を含め、のパブリックメソッドをパブリックのままにしておく必要があります。私はいくつかの方法でこれを回避できることを知っていますが、そのような小さな利益のために余分なコードを書くことは避けたいです。
@Apples、それは設計上の欠陥のようです。これらのクラスをどの程度制御できるかわかりません。何が行われるかを制御
—
R Sahu
A
できる場合はA
、2つのクラスに分けることができます。1つはlyをB
継承できるクラスpublic
で、もう1つはlyを継承できるクラスprivate
です。