我正在使用快速 JSON 为C++回合制 RPG 解析对象敌人,并且遇到了一些奇怪的错误
I'm using rapid JSON to parse an object enemy for a C++ turn based rpg and am having some strange error's
我有一些代表游戏中敌人的 Json 文件,我正在尝试访问并复制到C++变量中。
{
"Wolf": {
"Type": 0,
"ID": 0,
"Level": 1,
"Name": "Wolf",
"Health": 100,
"Strength": 20,
"Speed": 35,
"Exp": 20,
"Defense": 30,
"Sprite": "Assets/Wolf_Sprite.png",
"Status": "Normal"
}
}
这是我代码的相关部分
#pragma once
#include <iostream>
#include "rapidjson/document.h"
#include "rapidjson/filereadstream.h"
/******************************
* The Base Values of the enemy.
*******************************/
using namespace rapidjson;
class EnemyType
{
private:
std::string Name;
std::string FileName;
int ID;
int Level;
double expGiven;
double Health;
double Speed;
double Strength;
double Defense;
Document Doc;
public:
EnemyType()
{
FILE* pFile = fopen("Assets/Enemy_List/0.json", "rb");
char buffer[65536];
FileReadStream is(pFile, buffer, sizeof(buffer));
Doc.ParseStream<0, UTF8<>, FileReadStream>(is);
assert(Doc.IsObject());
assert(Doc.HasMember("Type"));
assert(Doc.HasMember("ID"));
assert(Doc.HasMember("Level"));
assert(Doc.HasMember("Name"));
assert(Doc.HasMember("Health"));
Health = Doc["Health"].GetDouble();
}
问题是文件本身打开正确并通过了isObject断言,但是任何过去的东西都会崩溃而不会失败......任何帮助将不胜感激。
从堆栈窗口 ucrtbased.dll!issue_debug_notification(const wchar_t * const message) 第 125 行C++非用户代码。已加载符号。
终端中的错误:断言失败:Doc.HasMember("Type"),文件 c:\users\timothy\documents\visual studio 2017\projects\musungo game\musungo game\enemytype.h,第 36 行
编辑:我发现答案是.HasMember 我指定了错误的单词,而应该是 Doc.HasMember("类"))
the error in the terminal: Assertion failed: Doc.HasMember("Type")
此错误的原因 - Type 是 Wolf 的子级,因此它应该作为 Doc["Wolf"]["Type"] 访问,断言应如下所示
assert(Doc.HasMember("Wolf"));
assert(Doc["Wolf"].HasMember("Type"));
或来自用户的建议2350585
assert(Doc.HasMember("Wolf"));
auto Wolf = Doc["Wolf"];
assert(Wolf.HasMember("Type"));
相关文章:
- 在C++中遇到对象和类问题
- 我正在使用快速 JSON 为C++回合制 RPG 解析对象敌人,并且遇到了一些奇怪的错误
- 访问对象数组中的对象时遇到问题
- 运算符重载<<,打印对象矢量时遇到问题
- 我的程序在尝试将数据集追加到类对象时遇到"Process returned -1073741819 (0xC0000005)"
- 使用矢量push_back代码创建对象副本时遇到问题
- 更新对象的属性时遇到问题?
- 谁让狗出去的?- 当"Is-A"在类层次结构中遇到"Has-A"时销毁对象
- 在向向量中添加2个以上对象时遇到问题
- 我正在处理一个 c++ 项目,但在通过引用传递 rect0 对象时遇到问题
- 使用对象和类的初学者遇到以下错误
- 我可以显示根据需要创建的对象(QLabel 的子类)吗?(我遇到的问题是删除它)
- 通过指针访问对象数组时遇到问题
- 对对象数组 C++ 进行排序时遇到问题
- 在渲染多个对象时,在C++中使用 OpenGL 时遇到困难
- 提升shared_ptr对象在获取值时遇到问题
- 我在创建对象并使用向量而不是数组使用它们的类函数时遇到问题......我做错了什么?
- 在以面向对象的方式包装OpenGL时遇到麻烦
- 在c++中使用用户定义对象的优先级时遇到问题
- 从vector访问对象时遇到麻烦