如何在类中更改数组
How to change array in class?
本文关键字:数组 更新时间:2023-10-16
如何赋值字符数组'startData'
int main()
{
Player plyr_1('X');
Player plyr_2('O');
char startData[8][8] = {{' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ','O','X',' ',' ',' '},
{' ',' ',' ','X','O',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' '}};
在这个循环的开始
menu = false;
while(menu == false)
{
int turnCounter = 1;
Player currentPlyr('X');
currentPlyr = plyr_1;
plyr_1.data = startData;
plyr_2.data = startData;
plyr_1.score = 2;
plyr_2.score = 2;
selectMenu = currentPlyr.mainMenu();
在创建类'plyr_1'和'plyr_2'中的数组'data'
'data'是来自'Game'类的公共字符数组
class Game
{
public:
char data[8][8];
复位板每次循环开始?
谢谢
如果你的问题是你不能分配数组,有几个解决方案。
你可以使用自定义函数来重置你的数组:
#include <cstddef>
constexpr std::size_t arraySize = 8;
void resetMyArray(const int startingArray[][arraySize],
int toReset[][arraySize])
{
for( std::size_t i = 0 ; i < arraySize ; ++i )
for( std::size_t j = 0 ; j < arraySize ; ++j )
toReset[i][j] = startingArray[i][j];
}
int main(int argc, char* argv[])
{
int x[arraySize][arraySize];
int y[arraySize][arraySize];
resetMyArray(x, y);
return 0;
}
或使用std::数组代替:
#include <array>
#include <cstddef>
int main(int argc, char* argv[])
{
constexpr std::size_t arraySize = 8;
std::array<std::array<int, arraySize>, arraySize> x;
std::array<std::array<int, arraySize>, arraySize> y;
x = y;
return 0;
}
编辑:您也可以使用std::vector,但这样可能效率较低,因为std::vector在编译时并不知道数组的大小。
编辑:如果你关心数组的作用域,π α ντα ρ ε ε给出了一个解决方案。
就个人而言,我将其声明为static constexpr
在游戏类(这有点像定义一个全局),虽然我不知道你的类是如何交互的。
嗯,你可以有一个全局数组用来初始化你的板,并将在几个Player
实例之间共享。
只要在main()
作用域之外提供startData
作为全局静态,并让Player
接收该实例的引用。
但是,我不认为上面提到的是一个好的解决方案。
你应该有一个class Board
包含和一致地管理一个内部成员startData
(或者更好的boardData
),并在Player
实例之间共享对它的引用。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '