pointer to std :: vector beliebigen Typs (oder einer anderen Klasse mit Vorlagen)

Nehmen wir an, ich möchte eine Mitgliedsvariable für einen Zeiger auf std :: vector haben, aber ich möchte nicht angeben, welchen Variablentyp er speichert. Ich möchte nur auf die Funktionen zugreifen, die vom eigentlichen generischen Typ unabhängig sind. ist das mit c ++ möglich? etwas wie das

class Foo{
public:
    void setVec(std::vector* someVec){
        myVec = someVec;
    };
    int getSize(){
        return myVec.size();
    };
private:
    std::vector* myVec;
};


int main(){
    Foo foo;
    vector<int> vec1;
    vector<float> vec2;
    foo.setVec(&vec1);
    cout<<foo.getSize();
    foo.setVec(&vec2);
    cout<<foo.getSize();
}

note: Ich möchte keine Vorlage für Foo erstellen und ich möchte nur eine einzige Instanz von Foo mit Vektoren unterschiedlichen Typs verwenden.

natürlich - wenn ich den Klassenvektor ändern könnte, könnte ich eine Basisklasse ohne Vorlage erstellen

class Ivector{
    virtual int size()=0;
};

und dann das @ mach

class vector<T> : public IVector...

inherit von Ivector. aber was mache ich, wenn ich die betreffende Klasse nicht ändern kann und die Klasse mit Vorlagen keine solche Basisklasse ohne Vorlagen hat?

Vielen Dank

Antworten auf die Frage(6)

Ihre Antwort auf die Frage