今Cocos2dxを用いて本のサンプルゲームを作成しているのですが、タイトルのエラーがでてしまい。なぜこのようなエラーが出てしまっているのかわからない状況です。

以下のコードのcreateSceneWithLevelの最後のリターン文でエラーが出ます。またメソッドの最初でも

Function cannot return function type 'cocos2d::Scene *()'

というエラーが出てしまいます。
修正方法をご教授ください。

ヘッダーとソースコードをいかに示します。

#include "MainScene.h"

USING_NS_CC;

const Vec2 GRAVITY_ACCELERATION = Vec2(0, -3);
const Vec2 IMPULSE_ACCELERATION = Vec2(0, 180);

Scene* MainScene::createSceneWithLevel(int level)()
{
    // 'scene' is an autorelease object
    auto scene = Scene::createWithPhysics();

    auto world = scene->getPhysicsWorld();

    //重力を設定する
    world->setGravity(GRAVITY_ACCELERATION);

#if COCOS2D_DEBUG > 0

    world->setDebugDrawMask(PhysicsWorld::DEBUGDRAW_ALL);
#endif


    world->setSpeed(6.0);

    auto layer = new MainScene();
    if(layer && layer->initWithLevel(level)){
        layer->autorelease();
    }else{
        CC_SAFE_DELETE(layer);
    }
    scene->addChild(layer);

    //return scene
    return scene;
}

bool MainScene::initWithLevel(int level)
{
    if(!Layer::init())
        return false;

    //ステージを生成
    auto stage = Stage::createWithLevel(level);
    this->addChild(stage);
    this->setStage(stage);

    //タッチした時のリスナを初期化
    auto listener = EventListenerTouchOneByOne::create();
    listener->onTouchBegan = [this](Touch *touch, Event *event){
        this->setIsPress(true);
        return true;
    };
    listener->onTouchEnded = [this](Touch *touch, Event *event){
        this->setIsPress(false);
    };
    listener->onTouchCancelled = [this](Touch *touch, Event *event){
        this->setIsPress(false);
    };
    //Register event listener
    this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);

    //ぶつかったリスナを定義
    auto contactListener = EventListenerPhysicsContact::create();
    contactListener->onContactBegin = [](PhysicsContact& contact){
        log("hit");
        return true;
    };
    this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(contactListener, this);

    this->scheduleUpdate();
    return this;
}

MainScene::MainScene()
: _stage(nullptr)
,_isPress(false)
{

}

MainScene::~MainScene()
{
    CC_SAFE_RELEASE_NULL(_stage);
}

void MainScene::update(float dt)
{
    if(this->getIsPress()){
        //プレスされた場合プレイヤの推進力をつける
        _stage->getPlayer()->getPhysicsBody()->applyImpulse(IMPULSE_ACCELERATION);
    }
}
#ifndef __SampleGame_SCENE_H__
#define __SampleGame_SCENE_H__

#include "cocos2d.h"
#include "Stage.h"

class MainScene : public cocos2d::Layer
{
protected:
    MainScene();
    virtual ~MainScene();
    bool init() override;
    bool initWithLevel(int level);
public:
    static cocos2d::Scene* createSceneWithLevel(int level);
    void update(float dt);
    CC_SYNTHESIZE(bool, _isPress, IsPress);
    CC_SYNTHESIZE_RETAIN(Stage *, _stage, Stage);
};

#endif // __SampleGame_SCENE_H__