【发布时间】:2015-10-26 15:48:28
【问题描述】:
我有一个通用类 Player,在该类中我声明了一个较小类的对象,例如 Weapon、Inventory 等。
当然,我使用指针 (shared_ptr) 来实例化我的 Player 对象,并使用相同的方法来实例化我的类中的任何对象。我应该继续这样做还是应该尝试通过不使用指针来使其更简单,这会带来一定的缺点吗?
class Player: public Human, public Control
{
public:
Player();
~Player(){};
private:
Weapon myWeapon;
std::vector<std::tr1::shared_ptr<Weapon> > WeaponsList;
};
对比
class Player: public Human, public Control
{
public:
Player();
~Player(){};
private:
Weapon myWeapon;
std::vector<Weapon> WeaponsList;
};
注意,我使用 shared_ptr 并希望保留一个选项,让 Weapon 在某个时候成为基类(但不要着急!)。
【问题讨论】:
-
Weapon是多态类型吗? -
Err...
class Player的构造函数不会被称为Player(),而不是gPlayer()?为什么MountWeapon()工作在ints 而myWeapon类型为Weapon? 为什么public是成员? 为什么rWeapon()返回一个非const对成员的引用?为什么使用指针是“自然”的?为什么Draw()是Player的成员? Ohmagawd... :-D -
还没有,我尽量保持简单,但里面有一个“Ammo”对象。不过,我想保持该选项处于打开状态以使其在某些时候具有多态性。
-
@DevSolar:问题太多了。。不要在不知道里面有什么的情况下取出代码并坚持问题。我有 42k 行代码工作得很好,20k 个物体表现得很漂亮,碰撞和射击以及稳定的 120 fps 速率。
-
@DevSolar。没有冒犯。请注意,编写需要维护的代码(例如在工作室工作并被其他人阅读)与爱好编程之间存在差异。我在这个项目上工作了 5 年(偶尔),并且没有遇到任何麻烦,甚至休息了一年。在 42k 的代码中,引擎运行平稳,到目前为止我没有遇到任何错误。如果将来我计划扩展它时它开始崩溃,我会重新考虑并更多地考虑有缺陷的游戏设计。