私は3.15に移行しようとしているCocos2d-x 3.14プロジェクトを持っていますが、これはiOSでも完璧に機能します。 3.14両方でうまく動作します。Segfaultが宣言されたメンバーのヘッダにアクセスしようとしています
移行されたバージョン3.15を実行しているとき、this-> memberを使用してヘッダーで宣言されたメンバーにアクセスするとsegfaultが発生します。ローカル変数を追加するとうまく動作します。
HPPファイル:
class GameBoard : public Layer
{
public:
static cocos2d::Scene* createScene();
virtual bool init();
CREATE_FUNC(GameBoard);
// background
Sprite* background;
void setupBackGround();
...
}
CPPファイル:
void GameBoard::setupBackground() {
cocos2d::Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
if (this->background == NULL) {
doStuff();
}
}
ライン 'this->背景' クラッシュしました。なぜこのようなことが起こるのか誰にも分かりますか?
私はこれがバックグラウンドでクラッシュしないと思います。初期化されていないバックグラウンドにアクセスする可能性のあるdoStuffでクラッシュしているようです。 – user1438832
'this'はその時点でインスタンス化されたインスタンスを指していますか? –
または、既に削除された 'GameBoard'オブジェクトで' GameBoard :: setupBackground'を呼び出していますか? – nakiya