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です。