誰かがすでにこれを尋ねているかどうかはわかりませんが、ここで奇妙な動作が見られます:
2つのクラスを宣言しました。1つはベースで、もう1つは1つの仮想メソッドで派生したものdisplay()
です。
class A {
public:
virtual void display() {
cout << "base class" << endl;
}
};
class B:public A {
public:
void display() {
cout << "derived class" << endl;
}
};
さて、で、のmain()
を宣言して新しいインスタンスを割り当てようとすると、auto_ptr
A
B
int main() {
auto_ptr<A> *a = (auto_ptr<A>*)new B();
a->display();
}
コンパイル時にこのエラーが発生します:
「
'class std::auto_ptr<A>'
'display'という名前のメンバーはありません」
私は何か間違ったことをしていますか?誰かがその行動を説明できますか?