私は、派生クラスが設定すべき配列を持つ基底クラスを持つことを試みています。アプリケーションはテトリスゲームなので、それぞれのクラス(つまりSquareShape、TShapeなど)が特定の形状の回転に基づいて設定されるローテーションの配列を保持するBaseShapeクラスを用意したいと思います。C++の派生クラスでデータメンバ配列を割り当てる方法は?
class BaseShape
{
public:
BaseShape();
BaseShape(int my_rot[4][5][5]);
~BaseShape();
int rot[4][5][5];
int i_rot;
};
class SquareShape : public BaseShape
{
public:
SquareShape();
~SquareShape();
};
私は、Squareメンバークラスの値をSquareShapeクラスに設定したいと考えています。私は、派生クラスのコンストラクタ(配列を割り当てることができないことを学んだこと)をSquareShapeの初期化子リストに設定して(次に、派生クラスの初期化子で基本クラスのメンバーを初期化できないことを学んだ)、および基底クラスのコンストラクタに配列を渡すとエラーでコンパイルに失敗したパラメータにメンバーを初期化:だからこの場合、またはを達成するための方法は、実際に存在する場合、私は思ったんだけど
error: invalid conversion from ‘int (*)[5][5]’ to ‘int’ [-fpermissive]
rot{my_rot}
それについてもっと簡単な方法があります。私は理由はあなた一度、配列なしの例を使用目的に
#include <iostream>
struct Base {
int x;
Base(int a) : x(a) {}
};
struct Foo : Base {
Foo(int a) : Base(a) {}
};
int main() {
Foo f(1);
std::cout << f.x << "\n";
}
:
C-配列はコピー可能でない
std::array
を使用する場合があり、コピー可能ではありません。 – Jarod42