我只是在嘗試製作一個簡單的井字遊戲時遇到一些C++,並且遇到了一些問題。這是我的代碼:關於字符的C++初學者問題
#include <iostream>
using namespace std;
class Square {
public:
char getState() const;
void setState(char);
Square();
~Square();
private:
char * pState;
};
class Board {
public:
Board();
~Board();
void printBoard() const;
Square getSquare(short x, short y) const;
private:
Square board[3][3];
};
int main() {
Board board;
board.getSquare(1,2).setState('1');
board.printBoard();
return 0;
}
Square::Square() {
pState = new char;
*pState = ' ';
}
Square::~Square() {
delete pState;
}
char Square::getState() const {
return *pState;
}
void Square::setState(char set) {
*pState = set;
}
Board::~Board() {
}
Board::Board() {
}
void Board::printBoard() const {
for (int x = 0; x < 3; x++) {
cout << "|";
for (int y = 0; y < 3; y++) {
cout << board[x][y].getState();
}
cout << "|" << endl;
}
}
Square Board::getSquare(short x, short y) const {
return board[x][y];
}
原諒我,如果它存在公然明顯的問題,或者它愚蠢寫的,這是我在C++中第一個程序:P,但問題是,當我嘗試設置方1 ,2到字符'1',它不會打印出來作爲1,它會打印出一些我不認識的奇怪字符。
有誰能告訴我爲什麼? :)
在此先感謝。
是否有原因需要在堆上使用char *而不是在堆棧上使用普通的'char'? – 2010-04-26 19:06:56
這不是真的解決你的問題,但爲什麼你動態分配每個Square的狀態?爲什麼不只有一個字符字段?另外,你的getSquare應該返回一個正方形的引用,而不是按值返回。 – Uri 2010-04-26 19:07:20
Xavier:只是在嘗試新的東西。 Uri:我真的不知道。我對此很陌生。 – Samwhoo 2010-04-26 19:21:14