不确定是否有人已经问过这个问题,但我在这里看到了一个奇怪的行为:
我已经声明了两个类,一个是基类,一个是只用一个虚拟方法派生的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
ofA
并为其分配一个新实例B
,
int main() {
auto_ptr<A> *a = (auto_ptr<A>*)new B();
a->display();
}
我在编译时收到此错误:
“
'class std::auto_ptr<A>'
没有名为‘display’的成员”
难道我做错了什么?有人可以解释这种行为吗?