我的项目有一些问题。这是一些代码:
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 < matrix > ,因为当我将计算器与 QT 一起使用时,我可以更改我想要操作的操作数的类型(如向量或矩阵)。
好的,这可行,但我想返回 calcolatrice 中的数据,而不用 calcDinamica 的指针做很多 dynamic_cast。我怎样才能做到,还是不可能?因为如果不可能,我最好保留基类的这个选项,只创建 3 个不同的 calcolatrice。
提前致谢。