class vir
{
public:
vir(int a,int b,char s){x=a;y=b;sym=s;}
void move(){}
};
这段代码是从一个包含变量 int x、int y 和 char sym 的类中派生得到的。 我根据这个类派生了一个名为 subvir 的子类:
class subvir:public vir
{
public:
subvir(int a,int b,char s){x=a;y=b;sym=s;}
void move();
};
subvir::move()
{
x++;
return;
}
然后我创建了一个vir数组,并将一个subvir放入其中。
subvir sv1(0,0,'Q');
vir vir_RA[1]={sv1};
但是当我尝试使用 sv1.move() 时:
vir_RA[0].move();
它使用的是 vir move ({}) 而不是 subvir move ({x++}). 我尝试过将 sv1 设为 vir 和将 vir_RA 设为 vir,这样做是可行的;将它们都设为 subvir 也是可行的,但我需要它们不同。我尝试将 vir::move() 设为纯虚函数,但然后我得到了一个实例化数组的错误。有人知道我如何在使用数组时让 move() 正常工作吗?