尝试多态性时出错

4 c++ polymorphism

处理随机生成彩色块的小东西.无论如何,对于组织,我有每个生成器 - 用一个方法,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);
};
Run Code Online (Sandbox Code Playgroud)

错误:

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

为什么会发生这种情况,以及如何解决这个问题?

Ker*_* SB 8

你必须公开继承:

class Forest : public Generator
//             ^^^^^^
Run Code Online (Sandbox Code Playgroud)