我是C++的新手,在做作業(數獨)時遇到了問題。C++:sudoku(抄板)
指令說:「您必須創建一個新的板作爲當前板的副本(使用 複製構造函數並從堆中分配新的板)。」
我試過(它wriiten在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;
}
這讓當comp時沒有問題。但它在運行時不起作用。
怎麼辦?真的需要幫助,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
板B =新局(&this);這是不對的。如果你想使用「new」,你需要將它定義爲Board * b。 –
Sudoku求解器,是的!顯式內存處理,yikes! –