【发布时间】:2016-06-02 04:48:48
【问题描述】:
您好,我正在学习 C++,我需要有关我的编程代码的帮助。我试图让类中的本地函数可以访问我的私有 char 变量,以便我可以在 Int main() 中显示它。每次我运行编译器时,它都会给我一个错误(“无效类型'char [int]'用于数组下标”)。另外,如果有人知道如何在类中传递变量,以便我可以让板子显示用户移动;那将不胜感激。 P.S 我知道 done = 0。那只是为了我测试板输出。
#include <iostream>
#include <string>
using namespace std;
class CheckerBoard{
public:
void initBoard()
{
for(int y=0; y<3; y++)
{
for(int x=0; x<6; x++)
{
if((x%2)==0)
{
_board[y][x]='-';
}
else
{
_board[y][x]= '|';
}}
}
}
void printBoard(){
for(int y=0; y<3; y++)
{
for(int x=0; x<6; x++)
{
cout<< _board[y][x];
} cout<<endl;
}
}
void setBoard(char board){
_board[3][6]=board;}
char getBoard(){
return _board[3][6];
}
private:
char _board[3][6];
};
int main()
{int done=1;
int x;
int y;
while(done==0){
char player1Symbol;
char player2Symbol;
string player1Name;
string player2Name;
cout << "Welcome to Tic Tac Toe Lite" << endl;
cout<<"What is your Name player one?"<<endl;
cin>>player1Name;
cout<<"What symbol would you like?"<<endl;
cin>>player1Symbol;
cout<<"What is your name player two?"<<endl;
cin>>player2Name;
cout<<"What symbol would you like?"<<endl;
cin>>player2Symbol;
cout<<"Ok player one pick an X coordinate";
cin>>x;
cout<<"Now pick an Y coordinate";
cin>>y;
if(x>0&&y>0){
board[y][x]=player1Symbol;
}
CheckerBoard checkerBoard;
checkerBoard.initBoard();
checkerBoard.printBoard();
}
}
CheckerBoard checkerBoard;
checkerBoard.initBoard();
checkerBoard.printBoard();
return 0;
}
【问题讨论】:
-
您需要在
setBoard中执行与initBoard相同的两个循环。想想_board[3][6]=board;是什么意思。并将char的数组与char区分开来。 -
这里有很多错误。我最好的建议是把你的程序写成小块,并在你去的时候编译它。当您尝试一次编写所有代码并在最后编译它时,会出现很多错误,您将永远找不到简单的方法来修复它。
-
@LogicStuff 很抱歉,但我可以问一下,区分 char 数组和 char 数组是什么意思?你想让我把 void Initboard 放在 setBoard 里面吗?抱歉,我才 15 岁,还在努力理解?
-
编译至少从底部删除第6行中的
}并在if(x>0&&y>0){行之前添加char board[3][6];。通过这些更改,我成功地用 gcc 编译。但是程序仍然无法运行,这段代码中有很多错误 -
@jjstarz
char board表示一个char。char board[3][6]表示char数组的数组,但仅在声明中。后来board[3][6]表示在[3;6] 处给我char。
标签: c++ class multidimensional-array parameters char