研究一个随机生成彩色块的小东西。无论如何,对于组织,我有每个生成器 - 带有一个方法 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);
};

错误:



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

最佳答案

您必须公开继承:

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

关于c++ - 尝试多态时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17394603/

10-11 21:48