抽象クラスが存在するところでメソッドオーバーライドを正しく処理することに問題があります。 クラス階層内にあります。 私が説明しようとするでしょう:抽象クラスでのC++と継承
class AbstractClass{
public:
virtual void anyMethod() = 0;
};
class A : public AbstractClass {
void anyMethod() {
// A implementation of anyMethod
cout << "A";
}
};
class B : public AbstractClass {
void anyMethod() {
// B implementation of anyMethod
cout << "B";
}
};
AbstractClass *ptrA, *ptrB;
ptrA = new A();
ptrB = new B();
ptrA->anyMethod(); //prints A
ptrB->anyMethod(); //prints B
Ok..previous例の作業罰金.. AbstractClass 方法anyMethodの具体的な実装は、実行時に呼び出されます。 しかしAbstractClassはanyMethod呼ば 仮想ではない方法であり、他の基本クラスから派生している:私は何を誤解してい
ptrA = new A();
ptrB = new B();
ptrA->anyMethod(); //prints OtherClass
ptrB->anyMethod(); //prints OtherClass
:私はそのような何かをしようとすると、今
class OtherClass {
public:
void anyMethod() {
cout << "OtherClass";
}
};
class AbstractClass : public OtherClass {
public:
virtual void anyMethod() = 0;
};
//A and B declared the same way as described before.
を? キャストやtypeidなどを使わずにptrAとptrBの印刷AとBを作成するソリューションはありますか?
コードをフォーマットしてください – Elalfer
AとBも同様に2番目のケースに印刷してください。あなたの説明から何かが欠けていますか? – vitaut
私はあなたのコードをg ++でテストし、どちらの場合でもAとBを表示します。万一、 'OtherClass *'を使っていますか? – casablanca