我有一个基类:
class MTBGameObject : public CCNodeRGBA
我创建了另外两个类:
class MTBGamePlayer : virtual public MTBGameObject, virtual public CCSprite
class MTBGameObstacle : virtual public MTBGameObject
但是现在我无法使用MTBGamePlayer的任何属性,并且无法进行转换。
最佳答案
我正在寻找解决此问题的方法,但找不到任何东西。
所以我想到了这个解决方案,我知道这不是最好的解决方案,但是除非它能正常工作。
class MTBGameObject {
...
virtual CCNodeRGBA* self() = 0;
}
然后在子类中,我必须重写self函数:
class MTBGamePlayer : public MTBGameObject, public CCNodeRGBA {
...
CCNodeRGBA* MTBGameObstacle::self() {
CCNodeRGBA* node = dynamic_cast<CCNodeRGBA*>(this);
return node;
}
}
class MTBGameObstacle : public CCSprite, public MTBGameObject {
...
CCNodeRGBA* MTBGamePlayer::self() {
CCNodeRGBA* node = dynamic_cast<CCNodeRGBA*>(this);
return node;
}
}