我创建了一个名为 vir 的类,带有一个函数 move:
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() 时如何让它工作?