我有一个基类:
class MTBGameObject : public CCNodeRGBA
我还创建了另外两个类:
class MTBGamePlayer : virtual public MTBGameObject, virtual public CCSprite
class MTBGameObstacle : virtual public MTBGameObject
但现在我无法使用 MTBGamePlayer 的任何属性,也无法对其进行转换。
最佳答案
我一直在寻找这个问题的解决方案,但找不到任何东西.. 所以我想到了这个解决方案,我知道它不是最好的,但除非它运行良好。
class MTBGameObject {
...
virtual CCNodeRGBA* self() = 0;
}
然后在子类中我必须重写自身函数:
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;
}
}
关于c++ - 如何修复cocosdx中的钻石子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24342965/