In einer Klasse, Bdie von einer Klasse erbt A, ist es möglich, eine usingDeklaration zu verwenden, um Mitglieder Ain Bsogar 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.
privateVererbung schlecht durchdacht, IMO.
Cvon ihnen erbt B, Csollte aber keinen Zugriff auf Adie geschützten Methoden haben. Ich möchte jedoch, dass Adie ö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 Ain zwei Klassen aufteilen - eine, Bdie erben kann, publicund die andere private.