带抽象类的C ++构造函数

问题描述 投票:-3回答:2

我有这个名为士兵的班级,在我的项目中,每个士兵都必须拥有武器,我有5种不同类型的武器,每类武器类型都继承自“武器”类。我如何在士兵类中制作一个构造函数,以便士兵可以获得任何类型的武器?我想为每种类型的武器制作5种不同的构造器,但这没有多大意义

c++ constructor multiple-inheritance
2个回答
0
投票

说武器是所有武器的基类。说你有两种武器类型枪和刀:

class Weapon { virtual void shot() = 0; }

class Gun : public Weapon { virtual void shot() { cout << "Gun"; }


class Knife : public Weapon { virtual void shot() { cout << "Knife"; }

class Soldier {
   Weapon *weapon;
  public:
   Soldier() : weapon(nullptr) {}
   Soldier(Weapon* w) : weapon(w) {}
   void SetWeapon(Weapon* w) { weapon = w; }
   Weapon* GetWeapon() { return weapon; }
}

在真实的单词代码中,您会考虑使用RAII或smart_pointers来保存和删除Weapon *对象,否则可能会发生内存泄漏。


-2
投票

在您的士兵课上,您可以拥有以下内容:

#include "weapon.h"

class Soldier {
    Weapon *weapon;
public:
    Soldier(Weapon *weapon) {
        this->weapon = weapon;
    }
};

当你要实例化班级士兵时:

Weapon *w1 = new Knife(), *w2 = new M1();
Soldier s1(w1), s2(w2);
© www.soinside.com 2019 - 2024. All rights reserved.