Интерфейс:
template <class T>
class Interface{
public:
typedef T Units;
virtual T get() = 0;
};
Реализация1:
class Implementation1: public Interface<float> {
public:
float get() {
return 0.0f;
}
};
Реализация2:
class Implementation2: public Interface<int> {
public:
int get() {
return 0;
}
};
Контейнер (с ошибками):
class Container{
private:
Interface* floatGetter;
int n;
Timer::Units* array;
public:
Container(Interface* floatGetter, int n) {
this->floatGetter= floatGetter;
this->n = n;
array = new Timer::Units[n];
}
~Container() {
}
};
Для более подробной информации, у меня есть интерфейс шаблона и производный класс от этого интерфейса без шаблона. Некоторые другие классы принимают объект производного класса, но он принимает объект как интерфейс (другими словами, внедрение зависимости). Но тип интерфейса в этом классе определяется реализацией интерфейса. Как реализовать эту идею в C ++?
Edit1:
Пример:
Interface<float> myInterface1 = new Implementation1();
Interface<int> myInterface2 = new Implementation2();
Container container1 = new Container(myInterface1, 10);
Container container2 = new Container(myInterface2, 10);
Мне нужно, чтобы контейнер понимал аргумент шаблона интерфейса из его реализации.