cocos2d-x强制多重继承吗?
Does cocos2d-x force multiple inheritance?
我有一个类,
class Ticket : public cocos2d::CCNode, public cocos2d::CCTargetedTouchDelegate { ... };
当我使用
在该节点上注册触摸事件时,它可以正常工作:CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(ticket_, 0, true);
然而,如果我改变我的类,使它使用组合而不是继承CCNode位:
class Ticket : public cocos2d::CCTargetedTouchDelegate {
private:
cocos2d::CCNode* node_;
public:
Ticket() { node_ = new CCNode(); node_->init(); }
cocos2d::CCNode* node() { return node_; }
...
};
然后下面的SIGSEGV 11爆发:
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(ticket_, 0, true);
我已经添加了ticket_->node()到当前层,但我想知道触摸调度程序是否不喜欢节点和委托是不同的东西。或者换一种说法,触摸调度程序是否期望节点和委托是一样的?
所以简而言之,当我使用多重继承时,我的代码可以工作,但当我使用组合时,它就不能工作了。在不深入研究框架的情况下,有人能说这是真的吗,或者我只是错过了一些明显的东西?我使用cocos2d-2.1rc0-x-2.1.2是的,看起来cocos2d-x确实强制多重继承。它期望触摸委托能够动态地转换为一个CCObject,当你使用复合时,你的Ticket类不是这样的。当您从CCNode继承时,它本身继承自CCObject,您就清楚了。你可以在github上看到问题。
这似乎不是一个错误,因为文档实际上通过注释
暗示了这一点。CCTouchDispatcher重要:委托将被保留。
:: addTargetedDelegate。
相关文章:
- 关于C++中具有多重继承"this"指针的说明
- C++中模板化异常类的多重继承
- 虚拟继承中是否存在多重继承?
- 如何在 c++ 多重继承中调用父非虚函数?
- 多重继承相同的方法名,没有歧义
- 使用enable_if解决多重继承歧义
- 多重继承导致虚假的模糊虚拟函数过载
- 多重继承和访问不明确的元素
- C++ 多重继承:使用基类 A 的实现实现基类 B 的抽象方法
- 多重继承中的派生类的行为类似于聚合
- 为什么我的 Hippomock 期望在使用多重继承时失败
- 带有此指针的模板类多重继承构造函数不起作用?
- 使用多重继承时出现编译错误
- 增强多重继承的序列化
- 多重继承:跳过'virtual'关键字并拒绝菱形层次结构的使用?
- 仅函数的多重继承 - 没有虚拟和 CRTP
- C++多重继承和鸭子类型
- C++两次从文件保存对象读取多重继承
- 从多重继承中的派生类函数调用适当的父类函数
- cocos2d-x强制多重继承吗?