我只是在尝试制作一个简单的井字游戏时遇到一些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