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