c++如何跨多个类对同一对象进行更改
c++ How to make changes to the same object across multiple classes?
这里没有。我正在尝试跨多个类对Player
对象mainCharacter
进行更改。我目前有一个Player
对象声明如下。Player
可以传送到各个世界并与怪物战斗。
所有这些代码都有效。一旦一个世界的敌人被打败,他们就会继续被打败。我的问题是,当他传送到另一个世界时,Player
的属性都重置为默认值;即使在前一个世界中受到敌人的伤害,他也能再次获得满生命值。
如何在多个类或世界中对同一Player
对象进行更改?我想我的申报有问题,但我不确定。我感谢您的意见。谢谢
声明mainCharacter
对象的位置:
class SpaceList
{
protected:
class SpaceNode
{
friend class SpaceList;
Player mainCharacter;
Space* thisSpace;
SpaceNode* next;
SpaceNode(int m, SpaceNode* next1 = NULL)
{
if(m == 0)
{
thisSpace = new EntranceHall(&mainCharacter);
}
else if(m == 1)
{
thisSpace = new WaterSpace(&mainCharacter);
}
Player.hpp
:的一部分
class Player: public Interactable
{
protected:
Backpack myBackpack;
public:
Player();
virtual interactableType getInteractableType();
virtual int interact();
virtual int attack();
virtual void defend(int);
Player.cpp
的一部分:
Player::Player()
{
healthPoints = 10;
numberOfAttackDice = 1;
sidesOfAttackDice = 6;
numberOfDefendDice = 1;
sidesOfDefendDice = 6;
}
mainCharacter
从Entrance
开始(Entrance.cpp
):
EntranceHall::EntranceHall(Interactable* mainCharacter)
{
interactableGrid[6][3] = mainCharacter;
interactableGrid[0][3] = new Portal(0);//entrance portal
interactableGrid[3][3] = new InterestPoint(0);//stone mural
}
mainCharacter
稍后可能传送到水世界,默认值重置(Waterspace.cpp
):
WaterSpace::WaterSpace(Interactable* mainCharacter)
{
interactableGrid[3][0] = mainCharacter;
interactableGrid[3][3] = new Boss(this->getSpaceType());
删除SpaceNode
和Player
之间的has-a关系-在外部某处创建一个Player
的实例,并使用指针引用它,就像你习惯的那样。或者只将其设为static
,这样就只有一个实例不会被重构(或者为每个SpaceNode
单独构建)。
注:
-
不要自己实现链表,这种数据结构甚至不适合这里。试试
std::vector
。 -
最好改用智能指针。你可能在不知情的情况下泄露了内存。
相关文章:
- 跨多个对象使用地图
- 将对象传递给多线程对象 Qt
- 跨多个类的全局变量而不会出现重定义错误?
- 错误:无法传递非平凡类型"std::string"的对象和更多错误
- 是否可以跨多个源文件构建 constexpr 数据结构?
- C++,在对象内分配多个数据时,堆栈分配是否更有效? 在下面的程序中,类A_Heap的效率会更低吗?
- 渲染窗口无法跨多个函数工作
- 同一提升 TCP 套接字对象上的多个连接
- 我们可以在同一对象中实现多个QtRO接口吗?
- 跨多个环境动态链接 Boost
- 函数跨多个C 源文件
- (XAML UWP)定义元素,包括跨多个页面(C )使用的事件
- 如何使用箭头指针打印出一类数组对象,这些对象中有多个分数
- C++:对象键的多映射自定义比较器
- 通过void指针通过C ABI传递C++对象(可能具有多个虚拟继承)
- 是否为每个C++对象编译了多个成员函数?
- 跨多个线程的 Acess boost ptree
- 如何以对象定义向多个构造函数发送值
- 无法在跨多个 DLL 的标头中定义单个对象
- c++如何跨多个类对同一对象进行更改