C++ でのクラス キャストに問題があります。
学ぶために、合計などの演算を行うクラスを作成したかったのですが、起動するたびにクラッシュするようです。
ここに私の簡単なクラスがあります:
#include <iostream>
class CCalculation {
public:
CCalculation() {};
virtual int calculate() = 0;
};
class CCalc_CONST : public CCalculation {
int x;
public:
CCalc_CONST(int a) : x(a) {};
int calculate() { return x; };
};
class CCalc_ADD : public CCalculation {
CCalculation *x;
CCalculation *y;
public:
CCalc_ADD(CCalculation *a, CCalculation *b) {
this->x = a;
this->y = b;
};
int calculate() {
std::cout << "Calculation...\n";
return x->calculate() + y->calculate();
};
};
そして私のテスト:
CCalculation *a = &CCalc_CONST(4);
CCalculation *b = &CCalc_CONST(1);
CCalculation *c = &CCalc_ADD(a,b);
std::cout << "res: " << c->calculate() << "\n";
毎回クラッシュするようです (コンパイラ エラーや警告は表示されませんでした)。私が見つけた唯一の実行方法は、CCalc_ADD 構築で a->calculate と b->calculate を出力しているときです。関数を機能させるために計算関数を呼び出す必要がある理由がまったくわかりません。
誰かが実際にそれを行う方法を私に説明してもらえますか?