Eine polymorphe Sammlung von kurioserweise wiederkehrenden Vorlagenmustern (CRTP) in C ++?

Ich habe eine KlasseBase von denen ich zwei Klassen habe,DerivedA undDerivedB Wie unten definiert.

template <typename Derived>
class Base{
public:
    double interface(){
        static_cast<Derived*>(this)->implementation();
    }
};

class Derived,A : public Base<DerivedA>{
public:
    double implementation(){ return 2.0;}
};

class DerivedB : public Base<DerivedB>{
public:
    double implementation(){ return 1.0;}
};

Kurz gesagt, ich versuche Folgendes, um eine Sammlung von Objekten zu verwalten, von denen einige sindDerivedA und einige davon sindDerivedB:

std::vector<std::shared_ptr<Derived>>

Was natürlich unmöglich ist, weil ich jetzt die Klasse gemacht habeDerived eine Klasse mit Vorlagen.

Kann ich auf irgendeine Weise eine polymorphe Sammlung von Objekten erstellen / verwalten?

EDIT: Leider funktioniert eine einfache Template-Struktur nicht als Funktionimplementation wird in meinem eigentlichen Programm vorgehalten - also dannimplementation müsste eine templierte rein virtuelle funktion sein, die nicht sein kann. Entschuldigen Sie meinen Mangel an Erklärung.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage