Препятствие полиморфизма шаблонов C ++

Интерфейс:

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);

Мне нужно, чтобы контейнер понимал аргумент шаблона интерфейса из его реализации.

6
задан itun 1 February 2012 в 00:58
поделиться