如何解决让一个类的实例搜索另一个类中的数组
我是新来的,真的不知道该放在哪里,但是我遇到了以下问题:
我有一个类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*
的二维数组的指针,每个维度为7
(根据CGarden
类)。请注意,该指针实际上并不真正拥有数组的内存,因此如果CGarden
超出范围,则访问该指针将是未定义的行为。
说...
IMO的一种更好的方法是重构代码,使CGarden
定义Find
逻辑,以使CZombie
与CGarden
之间没有强耦合。
在拓扑上,即使内部对象需要搜索外部对象的容器(即使该容器是共享的),设计也会更加复杂。如果您可以重构以免出现这种情况,那么它将更加干净和易于使用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。