C++中的继承:错误C2011

Dee*_*k B 3 c++ inheritance

我试图通过继承在C++的屏幕上显示不同颜色的Tiles.我有一个名为Tile的基类,然后是两个名为GreenTile和VanillaTile的派生类.

在我的主要内容中,当我通过创建GreenTile对象或VanillaTile对象仅创建GreenTile或仅创建VanillaTile时,它可以正常工作:

GreenTile greenTile(0,0);
greenTile.show(screen);
Run Code Online (Sandbox Code Playgroud)

问题是,当我创建GreenTile和VanillaTile对象并尝试显示两者时,我得到"错误C2011:'Tile':'class'类型重定义".

GreenTile greenTile(0,0);
VanillaTile vanillaTile(0,0);
greenTile.show(screen);
vanillaTile.show(screen);
Run Code Online (Sandbox Code Playgroud)

Ant*_*lov 5

你遇到的与继承无关:这是使用所谓的包含守卫的问题.请注意,这些通常只能防止编译器发出的多个定义错误,而不是链接器.