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

米姆

我必须修改我的程序并创建一个新的(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();
};

这是错误消息:

Error code C4430 missing typespecifier

法雷诺

我认为多态性是您的用例所需要的,并且可以解决您的问题。

假设您有一个用于动物的基类:

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向量的内容,因为动物是用new(“手动”分配的内存,在堆上)创建的。


仅供参考,Game该类不必从Rabbitand继承HedgeHog,它只需要知道它们是类成员,或者更好的是,将 a 存储std::vector<Animal*>为竞争者列表。

我希望它能帮助你改进你的设计并解决你的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C ++中,如何动态地从文件中创建一个类的多个对象?

来自分类Dev

如何在C ++中创建类对象的向量?

来自分类Dev

如何在C#中创建类对象列表的数组

来自分类Dev

如何在C#中创建多个对象?

来自分类Dev

如何在C ++中动态创建向量

来自分类Dev

如何在C ++中创建临时对象

来自分类Dev

如何在C中创建对象数组?

来自分类Dev

如何在C#中创建对象

来自分类Dev

如何在C或C ++中创建动态堆栈的动态数组

来自分类Dev

如何在C ++中的基类中创建派生类的对象

来自分类Dev

如何在QML中访问C ++类对象而不是在QML中创建单独的对象?

来自分类Dev

如何在具有动态对齐要求的C ++中创建对象?

来自分类Dev

如何在 C# 中创建类似于 ViewBag 的自己的动态对象?

来自分类Dev

如何在 C# 中为多个集合创建类模型?

来自分类Dev

如何在C中的过程中创建动态数组?

来自分类Dev

如何在C#中的函数中动态创建列表

来自分类Dev

如何在用C ++创建的类中创建数组?

来自分类Dev

如何在C ++中克隆动态类型未知的对象?

来自分类Dev

如何在C#中动态创建var数组

来自分类Dev

我如何在Objective C中创建动态方法

来自分类Dev

如何在C ++中的类之间保留多个引用?

来自分类Dev

如何在C ++中重新定义类对象

来自分类Dev

如何在类C ++中创建四个线程

来自分类Dev

如何在目标C中创建简单的Singleton类?

来自分类Dev

如何在C ++中创建抽象类的数组

来自分类Dev

如何在C ++中创建模板包装器类

来自分类Dev

如何在C ++中创建简单的单例类?

来自分类Dev

在c#中动态创建同一个类的多个对象实例

来自分类Dev

如何在C ++中创建方法的多个版本?

Related 相关文章

热门标签

归档