Betrachten Sie das folgende Beispiel:
class _ref
{
public:
_ref() {}
_ref(const _ref& that) {}
virtual ~_ref() = 0;
};
_ref::~_ref() {}
template
class ref : public _ref
{
protected:
ref(const _ref& that) {}
public:
ref() {}
ref(const ref& that) {}
virtual ~ref() {}
template
ref tryCast()
{
bool valid;
// Führen Sie einige Überprüfungen durch, um sicherzustellen, dass die Konvertierung gültig ist
if (valid)
return ref(*this); // ref kann auf geschützten Konstruktor in Klasse ref nicht zugreifen
else
return ref();
}
};
Ich möchte, dass alle Arten von 'ref'-Objekten auf die geschützten Konstruktoren der anderen zugreifen können. Gibt es eine Möglichkeit, dies zu erreichen?