尝试多态性时出错

Error with attempt at polymorphism

本文关键字:出错 多态性      更新时间:2023-10-16

处理一个随机生成彩色块的小东西。无论如何,对于组织,我在每个生成器的类中都有一个方法generate(),所有这些生成器都是从Generator派生而来的。World类包含这些的Generator *的集合,因此可以称为generators[randomIndex]->generate()

//in World.h
static std::vector<Generator *> generators;
//in World.cpp
generators.push_back(&Forest());
//Generator.h
class Generator
{
public:
    virtual void generate(sf::Color ** grid, sf::Vector2i size) = 0;
};

//Forest.h
class Forest : Generator
{
public:
        void generate(sf::Color ** grid, sf::Vector2i size);
};

错误:

"type cast":存在从"Forest*"到"Generator*"的转换,但无法访问

为什么会出现这种情况,以及如何解决?

您必须公开继承

class Forest : public Generator
//             ^^^^^^