私のプロジェクトにはいくつかの問題があります。ここにいくつかのコードがあります:
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 で電卓を使用しているときに、操作するオペランドの種類 (ベクトルや行列など) を変更できるためです。
わかりました、これは機能しますが、calcDinamica のポインターを使用して多くの dynamic_cast を実行せずに、 calcolatrice 内のデータを返したいと考えています。どうすればできますか、それとも不可能ですか?それが不可能な場合は、基本クラスのこのオプションを残して、3 つの異なるカルコラトリスを作成するだけです。
前もって感謝します。