我有两个B和C类 - 它们都是我(非常原始)游戏中的怪物。我有一个名为MOVE的函数,此时它只是改变了Monster的X和Y坐标。 B和C都来自A;所以A有X和Y坐标,B和C有其他属性,比如速度和攻击。
有没有办法可以设置一个允许我传递B或C的功能(因为它们都需要能够移动......),换句话说,如果怪物那么无关紧要被移动的是B或C - 但它会以同样的方式对待它们吗?
我正在考虑通过A级课程,但我无法让它工作! :-(。(也许这只是我非常缺乏经验!)
非常感谢 - :-)
KJ
答案 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