gpt4 book ai didi

c++ - 如何在 C++ 中动态创建(游戏角色)类的多个对象

转载 作者:行者123 更新时间:2023-11-28 04:17:29 25 4
gpt4 key购买 nike

我必须修改我的程序并创建一个新的 (Gamefigures) 类,我当前的类(Rabbit 和 Hedg)从该类继承。该代码是一个小游戏,其中两只动物比赛直到他们达到目标,但在第二个任务中我必须确保这些动物的多次迭代可以比赛。 (例如 5 对 5 或 X 对 X)。我可以将一些变量或方法移动到 Gamefigures 类。两种动物都使用不同的规则行走。我如何创建一个新类,它动态地创建多个对象,这些对象属于我当前类继承的同一个类?

我尝试过使用 new 表达式创建一个新对象,但我不知道这样做是否正确。

我试过:

Hedg* nHedg = new Hedg[numFigures];

这是我的其余代码:

class Hedg: public Gamefigures
{
private:
int salat = 1;
protected:
int position1 = 0;
public:
bool turn(int fields)
{
int counter = 10;
if (fields < 11)//Less than 10 fields
{
while ((counter > 0))
{
if (counter < fields)//max 10 fields
{
fields = counter;
}
position1 += fields;//walk
counter -= fields;
if (counter <= 0)
{
salat = 0;
}
}
getSalat();
return true;
}
else
return false;
}
Hedg()
{
}
int getPosition1()
{
return position1;
}
int getSalat()
{
return salat = 1;
}
int getStock1()
{
return salat;
}
~Hedg()
{
}
};

class Game :public Hedg, public Rabbit
{
private:
int goal = 0;
int numFields = 0;
protected:
Rabbit theRabbit;
Hedg theHedg;
public:
Game();
Game(int numFields);
int getGoal();
int dice();
void doyourturn();
bool getStand();
~Game();
};

这是错误信息:

错误代码 C4430 缺少类型说明符

最佳答案

我认为 polymorphism是您的用例所需要的,将解决您的问题。

假设您有一个动物基类:

class Animal
{
// ...
// Create all the (pure) virtual methods to be redefined by a derived class
virtual void walk() = 0; // For example
};

然后定义两种特定的动物,兔子和刺猬:

class Rabbit : public Animal
{
// ...
// Redefine here the (pure) virtual methods of Animal for a Rabbit
void walk() override;
};
class HedgeHog : public Animal
{
// ...
// Redefine here the (pure) virtual methods of Animal for a HedgeHog
void walk override;
};

并且您可以使用多态性来处理您的动物列表:

std::vector<Animal*> race_competitors;
race_competitors.push_back(new Rabbit);
race_competitors.push_back(new HedgeHog);

这样,当您调用 walk() 时方法超过竞争对手,它会自动执行相应动物的正确行走规则。

当然,在比赛结束时,别忘了delete vector 的内容,因为动物是用 new 创建的(在堆上“手动”分配内存)。


仅供引用,Game类不必继承自 RabbitHedgeHog ,它只需要知道他们是类(class)成员,或者更好的是,存储一个 std::vector<Animal*>作为竞争对手的列表。

希望对您改进设计、解决问题有帮助。

关于c++ - 如何在 C++ 中动态创建(游戏角色)类的多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56294415/

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