Наследование шаблона от базового класса и возвращаемых типов

У меня есть некоторые проблемы с моим проектом. Вот некоторый код:

class calcDinamica
{
public:
    virtual void somma() =0;
    virtual void creaPrimo() =0;
    virtual T* ritornaPrimo()const{cout<<"errore"<<endl;};//THIS is what i want
    virtual ~calcDinamica(){};
};

template<class T>
class calcolatrice:public calcDinamica
{
private:
    T* primoVett;  //first operand
    T* secondoVett; //second operand
    T* risultatoVett; //result
public:
    calcolatrice():primoVett(0), secondoVett(0), risultatoVett(0){};
    virtual void creaPrimo(){primoVett= new T;};
    virtual void creaSecondo(){secondoVett= new T;};
    virtual void creaRisultato(){};
    virtual void somma()
    {
        risultatoVett=new T;
        *risultatoVett=*primoVett+*secondoVett;
    };
    virtual T* ritornaPrimo()const{cout<<"giusto"<<endl;return primoVett;};
};

Этот код для калькулятора, у меня есть 3 других класса, и эти классы, которые я разместил выше, предназначены только для отслеживания данных, которые я создаю во время сеанса, так как я реализую это с помощью QT.

Итак, я создал эту базовую CalcDinamica только для того, чтобы у меня был указатель вроде calcDinamica* cal; и затем создаем его следующим образом: calc= new calcolatrice , потому что когда я использую калькулятор с QT, я могу изменить тип операндов, с которыми я хочу работать (например, векторы или матрица).

Хорошо, это работает, но я хочу вернуть данные внутри calcolatrice, не делая много динамических_кассет с указателем calcDinamica. Как я могу сделать это, или это невозможно? Потому что, если это невозможно, я лучше оставлю эту опцию в базовом классе и просто создаю 3 разных кальколатриса.

Заранее спасибо.

2 ответа

Может быть, вы должны добавитьtemplate<class T>" до "class calcDinamica" и добавить "<T>" после "class calcolatrice:public calcDinamica"

Если вы работаете с несколькими типами, вы должны реализовать единый базовый класс для выражений всех типов и использовать его в AST, а также выполнить проверку типов для всех вычисленных выражений.

Другие вопросы по тегам