今日2回も引っかかったのでメモ。
#問題
コンパイル時にCCVector.hのstatic_assertに引っかかった。
CCVector.h
static_assert(std::is_convertible<T, Ref*>::value, "Invalid Type for cocos2d::Vector<T>!");
grep Vector
してみたが、とあるヘッダファイルの
piyo.h
cocos2d::Vector<MySprite*> mySprites; // MySpriteはcocos2d::Spriteを継承
しか引っかからない。
はて、なんだろう。
#答え
piyo.h
でclass MySprite
を前方宣言していたのでした。
piyo.h
ではclass MySprite
の使用はポインタだけだったのでC++的にはOKだけど、
cocos2d::Vector的にはRefのポインタかどうか分かんねーよ、って事だったのね。
納得。
#余談
今回は単純に#include "MySprite.h"
で済んだけど、相互参照してたらどうするんだべ。
実装パターンを変えるしかないのかな。