In einer Klasse, B
die von einer Klasse erbt A
, ist es möglich, eine using
Deklaration zu verwenden, um Mitglieder A
in B
sogar Vorlagen wie diese zu bringen:
struct A {
template <typename T>
void foo();
};
struct B : private A {
using A::foo;
};
Aber kann es für Konvertierungsvorlagen gemacht werden?
struct A {
template <typename T>
operator T();
};
struct B : private A {
using A::operator /* ??? */;
};
Es scheint keine Möglichkeit zu geben, namentlich auf die Vorlage zu verweisen, aber ich würde mich gerne als falsch erweisen oder eine Klarstellung erhalten.
private
Vererbung schlecht durchdacht, IMO.
C
von ihnen erbt B
, C
sollte aber keinen Zugriff auf A
die geschützten Methoden haben. Ich möchte jedoch, dass A
die öffentlichen Methoden öffentlich bleiben, einschließlich dieses Konvertierungsoperators. Ich weiß, dass ich dies auf einige Arten umgehen könnte, aber ich würde es lieber vermeiden, zusätzlichen Code zu schreiben, um so wenig Nutzen zu erzielen.
A
, können Sie sich A
in zwei Klassen aufteilen - eine, B
die erben kann, public
und die andere private
.