допустим, я хочу иметь переменную-член для указателя на std :: vector, но я не хочу указывать, какой тип переменной он хранит. Я хочу получить доступ только к тем функциям, которые не зависят от его фактического универсального типа. это возможно с C ++? как то так:
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();
}
примечание: я не хочу шаблонировать Foo и хочу использовать только один экземпляр Foo с векторами другого типа.
конечно - если бы я мог изменить вектор класса, тогда я мог бы создать базовый класс без шаблонов
class Ivector{
virtual int size()=0;
};
, а затем сделать
class vector<T> : public IVector...
наследуется от Ivector. но что мне делать, если я не могу изменить рассматриваемый класс, а шаблонный класс не имеет такого необработанного базового класса?
спасибо!