使用相同的函数来处理不同的类

时间:2013-04-03 12:41:43

标签: c++ oop class

我有两个B和C类 - 它们都是我(非常原始)游戏中的怪物。我有一个名为MOVE的函数,此时它只是改变了Monster的X和Y坐标。 B和C都来自A;所以A有X和Y坐标,B和C有其他属性,比如速度和攻击。

有没有办法可以设置一个允许我传递B或C的功能(因为它们都需要能够移动......),换句话说,如果怪物那么无关紧要被移动的是B或C - 但它会以同样的方式对待它们吗?

我正在考虑通过A级课程,但我无法让它工作! :-(。(也许这只是我非常缺乏经验!)

非常感谢 - :-)

KJ

2 个答案:

答案 0 :(得分:2)

实现移动作为a的功能。然后b和c都将具有移动函数,然后您可以使用多态来将b和c都移动为a的子项。

对于更重要的答案,一些代码确实会有所帮助,当然也包括您正在使用的语言。你描述的方式,有些事情听起来并不像OO那样好。

答案 1 :(得分:1)

使用可以在父类move中实现A方法:

class A {
  private:
    int X;
    int Y;

  public:
    A() { X = 0; Y = 0; }

    inline void move (int dx, int dy) {
      X += dx;
      Y += dy;
      std::cout << "Moved to " << X << "," << Y << std::endl;
    }
};

class B : public A {};

class C : public A {};

然后您可以使用这些类:

A objB;
A objC;

objB.move(0,1);
objB.move(0,3);
objC.move(2,0);

此代码将打印:

Moved to 0,1
Moved to 0,4
Moved to 2,0