匪夷所思!关于replaceScene的问题,求指导

void LoginLayer::login(Ref* pSender,ui::TouchEventType type){
    if(type == TouchEventType::TOUCH_EVENT_ENDED){
        CCLOG("LOGIN NEXT");
        std::string username_str = username->getText();
        std::string password_str = password->getText();
        CCLOG("%s",username_str.c_str());
!FLPU3.jpg)

!FLPU3.jpg)

!FLPU3.jpg)

!FLPU3.jpg)

!FLPU3.jpg)

!FLPU3.jpg)

!FLPU3.jpg)


        LoginService* service = LoginService::getInstance();
        service->checkUserLogin(username_str,password_str,=](bool result){
            Director::getInstance()->replaceScene(MainScene::create());
        });

    }
}


```


这个函数主要是负责登录功能的,service->checkUerLogin除了传递账号密码之外,还传入一个回调函数,用于当验证完时调用
问题来了,我在这个回调函数里面写什么都可以成功调用,唯独调用replaceScene时会出现错误,
MainLayer的init函数是通过GUIReader从json文件中读入一个Widget再addChild



debug一下,发现能够进入MainLayer的init函数,但是到了GUIReader::widgetFromJsonFile的时候就中断了,到最后发现
!FLPU3.jpg)

!FLPU3.jpg)


void Sprite::setTexture(const std::string &filename)
{
    Texture2D *texture = Director::getInstance()->getTextureCache()->addImage(filename);
    setTexture(texture);


    Rect rect = Rect::ZERO;
    rect.size = texture->getContentSize();
    setTextureRect(rect);
}
这里找不到对应的texture然后setTexture的时候出错



问题是:
1。如果我调用的另一个不是用Cocostudio配置的Scene时(就是没有通过GUIReader去加载JSON文件) 却成功跳转了。。。

2。不把replaceScene的调用放在回调函数里面去跳转时可以的,证明我MainScene本身没有问题

3。综上,我个人觉得要么是GUIReader有点问题,要么就是我利用回调函数去跳转这种思路有问题。
求大神指导

C++11的语法真的好吊。。。