我收到了标题中显示的错误。我确定这只是一个简单的错误,但我还没弄明白。代码很简单,因为我刚开始使用C ++。我正在尝试制作一个Tic tac toe游戏,但错误阻碍了我。欢迎任何建议! :)
main.cpp中:
#include <iostream>
#include "Game.h"
using namespace std;
int main()
{
char board[3][3] = { {' ', ' ', ' '}, {' ', ' ', ' '}, {' ', ' ', ' '} };
cout << "*** Tic tac toe ***" << endl;
Game game001(char board[3][3]);
game001.printBoard();
}
Game.h
#pragma once
class Game
{
public:
Game(char a [3][3]);
void printBoard();
private:
char _board[3][3];
};
Game.cpp:
#include<iostream>
#include "Game.h"
using namespace std;
Game::Game(char a [3][3])
{
_board[3][3] = a[3][3];
}
void Game::printBoard()
{
cout << _board[0][0] << endl;
}
答案 0 :(得分:1)
您的代码中存在多个错误。
Game game001(char board[3][3]);
声明一个函数,而不是实例化一个对象。正确的语法是Game game001(board);
。
_board[3][3] = a[3][3];
也是错误的。它将编译,但它不会在运行时工作。它只复制1 char
而不是整个数组,并且数组为0索引,因此[3]
超出范围。您需要遍历复制每个char
的数组的每个维度。
printBoard()
相同,只输出1 char
而不是整个数组。
尝试更像这样的东西:
#pragma once
typedef char Board[3][3];
class Game {
public:
Game(Board &a);
void printBoard();
private:
Board _board;
};
#include <iostream>
#include "Game.h"
using namespace std;
Game::Game(Board &a) {
for(int row = 0; row < 3; ++row) {
for(int col = 0; col < 3; ++col) {
_board[row][col] = a[row][col];
}
}
}
void Game::printBoard() {
for(int row = 0; row < 3; ++row) {
for(int col = 0; col < 3; ++col) {
cout << _board[row][col] << ' ';
}
cout << endl;
}
}
#include <iostream>
#include "Game.h"
using namespace std;
int main() {
Board board = { {' ', ' ', ' '}, {' ', ' ', ' '}, {' ', ' ', ' '} };
cout << "*** Tic tac toe ***" << endl;
Game game001(board);
game001.printBoard();
return 0;
}