做一个随机生成彩色块的小东西。无论如何,为了组织,我在他们自己的类中都有每个生成器 - 带有一个方法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 *' 的转换存在,但无法访问
为什么会发生这种情况,以及如何解决?