c++ - 在 QSettings 中保存矩阵
问题描述
我正在开发我的 qt 国际象棋游戏,特别是持久性,所以当 MainWindow 关闭时,我必须保存代表棋盘状态的 int 矩阵。我已经编写了该函数,并且它与我为测试提供的矩阵一起工作得很好
MainWindow::~MainWindow()
{
int boardState2[8][8] = { {-5, -3, -4, -9, 0, -4, -3, -5},
{-1, 0, 0, -1, 0, -1, -1, -1},
{ 0, 0, 0, 0, -1, -2, 0, 0},
{ 0, 0, -1, 0, 0, 0, 0, 0},
{ 0, -1, 0, 1, 1, 4, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0},
{ 1, 1, 1, 0, 0, 1, 1, 1},
{ 5, 3, 0, 9, 2, 4, 3, 5} };
session.setBoardState(boardState2);
}
此代码在“MainWindow.cpp”文件中,我不会显示 setBoardState 函数,因为它按我说的那样工作,而是问题是我应该在这个 boardState2 中复制真实矩阵,以便将其存储在设置文件中使用该 setBoardState 函数。问题是真实矩阵在另一个文件“Piece.cpp”中,它是一个全局 int 矩阵。我不知道如何将它从“Piece.cpp”传递到“MainWindow.cpp”......我在想3个解决方案:
- 通过一些我不知道的函数将矩阵从一个 .cpp 传递到另一个
- 在 Piece 析构函数中调用该
session.setBoardState()
函数,但这里的问题是我必须将 Session 类(具有 QSettings)用作单例。我已经尝试过了,但是我的 Session 构造函数有问题 - 将真实矩阵保存在 .txt 文件中,然后从 MainWindow.cpp 中读取
如果您需要更多信息,我将编辑此帖子,希望您能帮助我
解决方案
c++ 关键字extern可以帮助您。使用extern您可以使用在其他 cpp 文件中定义的全局矩阵。
推荐阅读
- php - 如何从 JSON 解码的 PHP 多维数组中获取值?(贝宝 API)
- javascript - 如何使用 Sequelize.js 将数据插入到桥接/映射表中
- amazon-web-services - 用于未使用的弹性 IP 地址列表的 aws cli 命令?
- typescript - 将 global.d.ts 放在我的 src 文件夹中会给我看 Aurelia 带来问题
- azure - 我应该使用什么天蓝色后台进程?
- csv - 如何在 Neo4j 中与 Neo4j 中的两个 csv 条目匹配的两个节点之间创建一条边?
- haskell - 什么是度量?
- google-chrome - 谷歌浏览器不显示 fontawesome 的图标
- java - 计划任务中发生意外错误。:java.lang.NoSuchFieldError:ADJUST_DATES_TO_CONTEXT_TIME_ZONE
- c# - 反序列化 JSON 时遇到问题(预期单个值时得到值数组)