Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在文件中存储类实例 我试图用C++制作RPG,现在只需要一个文本RPG。我想创建很多“怪物”类的实例。假设我需要制造100个怪物(地精、食人魔、龙等),我应该如何储存这些怪物?我是否应该有一个单独的文件专门用于存储类实例,如果是,如何存储?我希望将它们都放在一个文件中,这样就不会在其他地方占用空间。_C++_Class_Instances - Fatal编程技术网

在文件中存储类实例 我试图用C++制作RPG,现在只需要一个文本RPG。我想创建很多“怪物”类的实例。假设我需要制造100个怪物(地精、食人魔、龙等),我应该如何储存这些怪物?我是否应该有一个单独的文件专门用于存储类实例,如果是,如何存储?我希望将它们都放在一个文件中,这样就不会在其他地方占用空间。

在文件中存储类实例 我试图用C++制作RPG,现在只需要一个文本RPG。我想创建很多“怪物”类的实例。假设我需要制造100个怪物(地精、食人魔、龙等),我应该如何储存这些怪物?我是否应该有一个单独的文件专门用于存储类实例,如果是,如何存储?我希望将它们都放在一个文件中,这样就不会在其他地方占用空间。,c++,class,instances,C++,Class,Instances,您可以将对象实例存储在文件中,这称为序列化,有多种方法可以实现,我建议在这方面进行更多的研究 我相信你不必为你的程序这样做,因为可能会有足够的空间来存储你所有的怪物,然后是一些 您可以将类存储在二进制文件中,并使用写入和读取 也许这就是你想要做的,这里有一个简单的例子。假设我们有这个课程: class Goblin { public: int health; int damage; }; 和要写入的文件: 现在我们可以创建一个Goblin对象: Goblin my_goblin

您可以将对象实例存储在文件中,这称为序列化,有多种方法可以实现,我建议在这方面进行更多的研究


我相信你不必为你的程序这样做,因为可能会有足够的空间来存储你所有的怪物,然后是一些

您可以将类存储在
二进制文件中,并使用
写入
读取

也许这就是你想要做的,这里有一个简单的例子。
假设我们有这个课程:

class Goblin {
public:
    int health;
    int damage;
};
和要写入的文件:

现在我们可以创建一个
Goblin
对象:

Goblin my_goblin;
my_goblin.health = 100;
my_goblin.damage = 50;
然后我们可以将数据写入二进制文件:

file.write(reinterpret_cast<char*>(&my_goblin.health), sizeof(my_goblin.health));
file.write(reinterpret_cast<char*>(&my_goblin.damage), sizeof(my_goblin.damage));
我们再次创建一个
Goblin
对象:

Goblin goblin;
然后我们可以将数据读入我们的课堂:

if (!file.read(reinterpret_cast<char*>(&goblin.health), sizeof(goblin.health))) {
    // handle error
}
if (!file.read(reinterpret_cast<char*>(&goblin.damage), sizeof(goblin.damage))) {
    // handle error
}
这真的没有必要

对于制作基于文本的游戏,您不需要上述方法。只需编写类并将它们保存在头文件中。将声明与实施分开


例如:
Goblin.h
Goblin.cpp
Dragon.h
Dragon.cpp
等等。

感谢您提供的详细示例,我可能只会像您建议的那样将它们存储在头文件中,谢谢!好的,谢谢你的建议,我会做一些序列化方面的研究,看看它是怎么回事。
Goblin goblin;
if (!file.read(reinterpret_cast<char*>(&goblin.health), sizeof(goblin.health))) {
    // handle error
}
if (!file.read(reinterpret_cast<char*>(&goblin.damage), sizeof(goblin.damage))) {
    // handle error
}
// Output result if all went well
cout << "Goblin health = " << goblin.health << '\n';
cout << "Goblin damage = " << goblin.damage << '\n';
Goblin health = 100
Goblin damage = 50