表达式必须具有类类型,'.x'左侧必须具有类/结构/联合
expression must have a class type & left of '.x' must have class/struct/union
我得到了标题中显示的错误。我确信这只是一个简单的错误,但我还没有弄清楚。代码之所以如此简单,是因为我刚开始使用C++。我正试图制作一款抖音游戏,但这个错误让我望而却步。欢迎任何建议!:)
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;
}
您的代码中有几个错误。
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;
}
相关文章:
- 没有类型结构绑定不起作用?
- 如何使用指针连接两种不同的节点类型(结构)?
- 无法汇总初始化类型结构的变量,其中包含在类模板中的位字段成员
- 您如何声明类型结构的堆栈?在C 中
- 访问指向相同类型结构的指针
- 静态数据类型(结构)的组织
- 创建类型结构的指针阵列
- 处理类型结构数组
- 嵌入式 C++:在 C++ 中初始化易失性类型结构
- Mac OSX的c++中的变量类型结构(oaidl.h)
- 嵌套类型:结构与类
- 如何在 python 中实现 c++ 类型结构
- 如何使用类型结构定义双端队列(双面队列)
- 删除类型结构的元素形式向量
- 从类型结构的向量中删除元素
- 在c#、c++和java中创建python弱类型结构的强类型版本
- 从较大的数据类型(结构)转换为较小的数据类型
- 使用QGLShaderProgram从Qt传递自定义类型(结构体)统一到GLSL
- 如何:公开c++数据结构/类型(结构体,枚举)供c#使用
- 按值将类型结构传递给函数,错误:声明"average"中的两个或多个数据类型!!-