gpt4 book ai didi

C++ 继承 : the virtual method of the derived class is not called

转载 作者:太空宇宙 更新时间:2023-11-04 16:25:55 25 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Store two classes with the same base class in a std::vector

我在 C++ 中遇到继承问题。这里我写了一个简单的代码来说明我的问题:

//Animal.h
class Animal
{
public:

Animal();
~Animal();

virtual const void Eat();
};

//Bear.h
class Bear: public Animal
{
public:

Animal();
~Animal();

virtual const void Eat();
};

//Animal.cpp
const void Animal::Eat() {
}

//Bear.cpp
const void Animal::Eat() {
//Do something
}

现在,在另一个类中,我声明了一个应该容纳动物的 vector ,然后我创建了一个 Bear 并将其放入我的 vector 中:

std::vector<Animal> a;
Bear b;
a.push_back(b);

现在的问题是,当我遍历动物 vector 并尝试调用 Eat() 时,会调用基类(动物)的 Eat 方法,但不会调用 Bear Eat 方法。

即使尝试使用 dynamic_cast it 也不起作用:dynamic_cast 失败了

dynamic_cast<Bear*>(&a.at(0));

我做错了什么?是因为我缺少拷贝构造函数吗?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com