问题描述
我们的iOS应用依赖于c ++库。我是c ++的新手,我正在寻找与此等效的c ++:
定义:
- (void)mySetter:(Thing)thing completion:(void (^)(BOOL))completion;
使用:
[self mySetter:thing completion:^(BOOL success) {
// do something if successful
}]
我知道这是一个愚蠢的问题,可能已经回答了,但是我遇到的所有答案对于c ++菜鸟还是很困惑。
很高兴删除,但更愿意给出投票和复选标记:)
解决方法
在C ++中,您通常为此使用std::function
,这是一个类模板,可以容纳任何类型的可调用函数/对象,包括lambda(注意:只要可复制):
@Component
public class RequestReplyRouter extends RouteBuilder {
@Override
public void configure() throws Exception {
from("direct:request-reply").
to("jms:RequestQueue?ReplyTo=ResponseQueue&exchangePattern=InOut")
.log("Request-reply Body is ${body} and header info is ${headers} ");
from("jms:ResponseQueue")
.log("Received Body is ${body} and header info is ${headers} ")
.to("direct:receive"); // sending data to the endpoint
}
}
请注意,在Objective-C ++ (。mm文件)中,您通常可以自由地混合使用C ++和Obj-C类型,因此您可以例如将一个块作为参数传递给C ++函数-您只需注意正确的block pointer syntax。
void mySetter(Thing thing,std::function<void(bool)> completion) {
// ...
completion(true);
}
mySetter(thing,[](bool success) {
// ...
});