gpt4 book ai didi

c++ - 让一个类的实例搜索另一个类中的数组

转载 作者:行者123 更新时间:2023-12-02 10:28:17 25 4
gpt4 key购买 nike

我是新来的,真的不知道该放在哪里,但是我遇到以下问题:
我有一个类CZombie,看起来像这样:

{
private:
int m_Lifepoints;
int m_PositionX;
int m_PositionY;
short m_SunSensetivity;

public:
CZombie(int Lifepoints, int PositionX, int PositionY, short Sun);
~CZombie();
void SetLifepoints(int Lifepoints);
int GetLifepoints();
void SetPositionX(int PosiX);
int GetPositionX();
void SetPositionY(int PosiY);
int GetPositionY();
short GetSunSensetivity();
bool virtual FireWeapon(int x, int y) = 0;
void virtual RevealRole();
void Find();
};

和一个CGarden类,如下所示:

#include "CZombie.h"

class CGarden
{
private:
CZombie* m_Array[7][7];

public:
CGarden();
~CGarden();
CZombie* ReturnValue(int x, int y);
void SetField(int x, int y, CZombie* thing);
};

在CZombie中,有一个名为Find的成员函数,该成员函数应搜索CGarden类中的二维数组,并在找到不是空指针的点后立即停止。
如何让僵尸搜索数组?
PS:我知道CZombie是抽象的,但是其子类必须能够在其中找到植物。

最佳答案

要回答您的紧迫问题,必须给CZombie一个指向数组的指针或引用以进行搜索,以便Find可以找到它。这可以作为原始指针/引用,shared_ptr等完成。例如:

class CZombie {
...
public:
CZombie(CZombie(*zombie_array)[7][7]*, Lifepoints, int PositionX, int PositionY, short Sun);
...
}
CZombie(*zombie_array)[7][7]*是指向 CZombie*的2D数组的指针,二维数组包含 7的每个维度(根据 CGarden类)。请注意,此指针实际上并不拥有数组的内存,因此,如果 CGarden超出范围,则访问此指针将是 undefined 的行为。

那就是...
IMO的一种更好的方法是重构您的代码,以便 CGarden定义 Find逻辑,以便 CZombieCGarden之间没有强耦合。
从拓扑上讲,如果内部对象需要搜索外部对象的容器(即使该容器是共享的),则设计会更加复杂。如果您可以重构以免出现这种情况,那么它将更加干净和易于使用。

关于c++ - 让一个类的实例搜索另一个类中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63379323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com