4

私は c++ が初めてで、宿題 (数独) をするときに問題が発生しました。

命令は次のように述べています。

私は試しました(それはboard.ccに書かれています):

#include "board.h"

// Search for a solution, returns NULL if no solution found
Board* Board::search(void) {
  Board b = new Board(&this);
  ...
  return b;
}

エラーメッセージが表示されました:

lvalue required as unary '&' operand.

私も試しました:

Board* Board::search(void) {
   Board b;
   Board *b3;
   b3 = &b;
...
   return b3;
}

これは、コンプ時に問題がありませんでした。しかし、実行中も機能しません。

どうやってするの?ここで本当に助けが必要です、thx!

board.h のコードは次のとおりです。

class Board {
private:
  Field fs[9][9]; // All fields on board

public:
  // Initialize board
  Board(void) {
    // Uses the default constructor of Field!
  }
  // Copy board
  Board(const Board& b) {
    for(int i = 0; i < 9; i++){
      for(int j = 0; j < 9; j++){
          fs[i][j] = b.fs[i][j];
      }
    }
  }

  // Assignment operator for board
  Board& operator=(const Board& b) {
    if(this != &b){
       for(int i = 0; i < 9; i++){
          for(int j = 0; j < 9; j++){
             fs[i][j] = b.fs[i][j];
          }
        }
     }
     return *this;
   }
   ....

完全な説明はここにあります: http://www.kth.se/polopoly_fs/1.136980!/Menu/general/column-content/attachment/2-2.pdf

コード: http://www.kth.se/polopoly_fs/1.136981!/Menu/general/column-content/attachment/2-2.zip

4

2 に答える 2

7

変化する:

Board b = new Board(&this);

に:

Board *b = new Board(*this);
于 2011-12-05T12:13:24.320 に答える
5
Board b = new Board(&this);

その行には 2 つのエラーがあります。最初のエラーは、 を使用して割り当てるとnew、タイプがBoard *だけでなく になることBoardです。this2 番目のエラーは、コピー コンストラクターを使用する場合は、 のアドレスではなく、 が指す要素を渡す必要があることですthis

Board * b = new Board( *this );
于 2011-12-05T12:20:01.340 に答える