0

クラス内の行列にサイズを指定する必要がありますがconst int size、コンパイラが文句を言います。私のニーズを満たすエレガントな方法はありますか?

header.h

class ChessBoard {
    int matrix[<size>][<size>];
public:
    ChessBoard(int s): <size>(s) {}
};

main.cpp

#include "header.h"
#include <iostream>
int main() {
    std::cout << "Enter the size of the chessboard: ";
    int n;
    std::cin >> n;

    ChessBoard cb(n);

    return 0;
}
4

2 に答える 2

2

固定サイズの行列をインスタンス化するには、次元をコンパイル時の定数にする必要があります。あなたの場合、サイズは実行時に決定されます。std::vector<int>を使用し、必要に応じて 2 つのインデックス アクセスを許可することをお勧めします。2D 構造は、不要な複雑さを追加するだけです。

class ChessBoard 
{
  std::vector<int> matrix;
public:
  int& operator()(size_t row, size_t column) { /* get element from matrix*/ }
  constint& operator()(size_t row, size_t column) const { /* get element from matrix*/ }
  ChessBoard(int s): matrix(s) {}
};
于 2013-05-26T11:19:42.570 に答える