C++ 表达式必须具有类类型&;';的左侧;。x';必须具有类/结构/联合
我得到了标题中显示的错误。我确信这只是一个简单的错误,但我还没弄清楚。代码很简单,因为我刚开始用C++。我想做一个井字游戏,但这个错误阻碍了我。欢迎任何建议!:) main.cpp:C++ 表达式必须具有类类型&;';的左侧;。x';必须具有类/结构/联合,c++,C++,我得到了标题中显示的错误。我确信这只是一个简单的错误,但我还没弄清楚。代码很简单,因为我刚开始用C++。我想做一个井字游戏,但这个错误阻碍了我。欢迎任何建议!:) main.cpp: #include <iostream> #include "Game.h" using namespace std; int main() { char board[3][3] = { {' ', ' ', ' '}, {' ', ' ', ' '}, {' ', ' ', ' '} }; cou
#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.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;
}
#包括
#包括“Game.h”
使用名称空间std;
Game::Game(char a[3][3])
{
_董事会[3][3]=a[3][3];
}
void Game::printBoard()
{
你的代码中有几个错误
Game game001(char board[3][3]);
声明函数,而不是实例化对象。正确的语法是Game game001(board);
\u board[3][3]=a[3][3];
也是错误的。它将编译,但在运行时无法工作。它只复制1个字符
而不是整个数组,并且数组是0索引的,因此[3]
是不受限制的。您需要遍历数组的每个维度,复制每个字符
与printBoard()
相同,它只输出1个char
,而不是整个数组
请尝试类似以下内容:
#pragma once
typedef char Board[3][3];
class Game {
public:
Game(Board &a);
void printBoard();
private:
Board _board;
};
#包括
#包括“Game.h”
使用名称空间std;
游戏:游戏(棋盘和a){
对于(int行=0;行<3;++行){
用于(整数列=0;列<3;++列){
_板[行][col]=一[行][col];
}
}
}
void Game::printBoard(){
对于(int行=0;行<3;++行){
用于(整数列=0;列<3;++列){
coutgame001游戏(charboard[3][3]);
声明一个函数!一个函数,它接受一个由三个字符组成的三个数组组成的数组,并返回一个游戏
对象。几乎可以肯定的是,将错误的文件内容粘贴到了您标记为Game.hIt的内容中。在我看来,这是您需要的。一些程序员伙计,那么我该如何调用构造函数?通过传递board
,“learning”顺便说一句,猜测很可怕,你应该听一些程序员的话。所以我需要将字符板[3][3]和字符板[3][3]更改为字符板和字符板[3][3],并通过引用传递字符板?@RioT1133你不必这样做,但这让事情变得更容易一个问题,typedef字符板[3][3]是什么;do?和是否通过引用传递是必需的?@RioT1133typedef
为char[3][3]创建别名Board
type,您正在多段代码中使用它。typedef减少了重复,使代码更易于阅读和理解。至于参考,它不是严格需要的,但它有助于避免在调用构造函数时生成阵列数据的冗余副本。我现在明白了,感谢您对我的耐心。
#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;
}