:派生クラスが配列で機能しないのはなぜですか? (C++)私は関数moveとVIRと呼ばれるクラスを、作成した
class vir
{
public:
vir(int a,int b,char s){x=a;y=b;sym=s;}
void move(){}
};
(それは変数とクラスから派生したのx、int型のY、およびchar型のSYM INT) は、私が得てきました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 sv1(0,0,'Q');
vir vir_RA[1]={sv1};
をsubvirを置くしかし、私はuのにしようとすると、 se sv1.move():
vir_RA [0] .move();
subvir move({x ++})ではなくvir move({})を使用します。私はsv1をvirとvir_RAをvirにしようとしましたが、それはうまく動作し、両方をsubvirにすると動作しますが、別のものにする必要があります。私はvir :: move()を純粋な仮想にしようとしましたが、配列を実体化するエラーが発生します。誰も私が配列からそれを使用するときに働くmove()を得る方法を知っていますか?
初期化子は、メンバフィールドとベースオブジェクトを初期化するための好ましい方法です。詳細については、http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.6を参照してください。例:subvir(int a、int b、char s):vir(a、b、s){} – outis