2017-03-14 11 views
1

私は、以下のようにクラス内の行と列を持つチェスボードを持っています。クラスメンバーへのアクセスC++

class ChessBoard 
{ 
public: 
       int getWidth() const; 
       int getHeight() const; 

       PieceType getPiece(int x, int y) const; 
       void setPiece(int x, int y, PieceType Piece); 
}; 

次にボードを作成します。

ChessBoard& board; 

その後、2つのループ内でボードの特定のタイルにアクセスしたいと思います。どうすればよいか分かりません。

for(i=0;i<=ColMax, i++){//column1-->columnMax 
    for(j=0;j<=rowMax-1,j++){//row1-->rowMax 

     board.PieceType.i.j // Is this the correct way to access a square? 
+5

あなたのクラスは 'ChessBoard'と呼ばれ、あなたはどこかで' Board'への参照を持っていますか?私はあなたが実際のコードを投稿していないと思います。 MCVEを投稿してください。 –

+0

'ChessBoard&board;'は、初期化(&を取り除く)するために必要な参照だけです。正方形にアクセスするには、おそらく、 'board.getPiece(i、j);'のような 'getPiece'メソッドを使う必要があります。 – Logman

+5

あなたが必要とするものは[初心者の本]です(http://stackoverflow.com/questions/)。 388242/the-definitive-c-book-guide-and-list)を参照してください。 –

答えて

2

ボードを初期化するときに間違っています。このコードは有効ではありません。

Board& board; 

これは、Boardオブジェクトのインスタンスへの参照を作成します。参照は初期化する必要があります。これがクラスメンバー宣言でない限り、このコードを作成しようとするとエラーが発生します。あなたはこのような一枚のコピーにアクセスしたいあなたが説明したチェス盤インターフェイスを考える

ChessBoard board; 

、::

PieceType piece = board.getPiece(i, j); 
チェス盤のオブジェクトのインスタンスを作成するには、このようなコードが欲しいです
関連する問題