强烈建议将 cocos2d-x 3.0 中的回调函数改成c++11风格

看以下代码,一看就晕头了。

typedef void (cocos2d::Ref::*SEL_HttpResponse)(HttpClient* client, HttpResponse* response);
#define httpresponse_selector(_SELECTOR) (cocos2d::network::SEL_HttpResponse)(&_SELECTOR)


    CC_DEPRECATED_ATTRIBUTE inline void setResponseCallback(Ref* pTarget, SEL_CallFuncND pSelector)
    {
        setResponseCallback(pTarget, (SEL_HttpResponse) pSelector);
    }

```





因为只能设置一个回调函数并且不支持上下文,所以,一个HttpRequest 只能对应一个接口了。或者得自己在 HTTP请求和响应中加上下文来区分。


如果改成C++11的风格。

typedef std::function SEL_HttpResponse;
#define httpresponse_selector(_SELECTOR) (std::bind(&_SELECTOR, this, std::placeholders::_1, std::placeholders::_2) )

这样就可以利用std::bind来传递下下文:

http_resonse->setResponseCallback(std::bind(&Test::CallBack, this, _1,_2, "上下文参数")  );

是不是方便很多,这样,再也不要维护一大堆 HttpRequest 了

我记得有个settag的方法 可以gettag 来判断