对象的传递方法作为参数

加萨萨

我必须使用尚未编写的部分代码来为学校做TP。该函数的原型如下:

 using Callback =
  std::function< bool(std::string const& request, std::string& response) >;

TCPServer::TCPServer(Callback const& callback) :
callback_(callback) {
  // signal(SIGPIPE, SIG_IGN);  // ignore nasty SIGPIPEs
}

我想使用的函数是名为的类的成员函数whole我正在使用此代码:

// cree l'objet qui gère les données
// create the object that manages the data
    shared_ptr<Whole> whole(new Whole());
    whole->createPhoto("Photo1", "undefined/paths", 0, 0);
    // cree le TCPServer
    shared_ptr<TCPServer> server = new TCPServer(&whole::processRequest)

但是由于某种原因,这似乎无法编译。我收到错误消息:“错误:“整个”不是类,名称空间或枚举shared_ptr服务器=新的TCPServer(&whole :: processRequest);”

有人能帮我吗 ?我不知道我应该使用哪种语法。

这是我的老师为实现类TCPserver给出的示例:

new TCPServer( [&](std::string const& request, std::string& response) {

    // the request sent by the client to the server
    std::cout << "request: " << request << std::endl;

    // the response that the server sends back to the client
    response = "RECEIVED: " + request;

    // return false would close the connection with the client
    return true;
  });
塞尔比

我假设将Whole :: processRequest声明为:

bool Whole::proessRequest(string const&, string&);

因此,与此相反,在没有Whole要传递的实例的情况下,只是一个指向没有Whole关联实例的函数的指针

shared_ptr<TCPServer> server = new TCPServer(&whole::processRequest)

改为这样做。创建lambda包装器,以捕获您的wholeshared_ptr实例并按您期望的方式调用该方法。

auto fn = [whole](std::string const& request, std::string& response) -> bool {
    return whole->processRequest(request, response);
};
shared_ptr<TCPServer> server = new TCPServer(fn);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

作为参数传递的对象的 JavaScript 调用方法

来自分类Dev

传递对象类型作为参数

来自分类Dev

返回传递的参数作为对象

来自分类Dev

将对象及其方法之一作为参数传递

来自分类Dev

如何在Javascript中将对象的方法作为参数传递

来自分类Dev

将委托对象类型作为协议方法参数传递

来自分类Dev

将地图对象作为可迭代的map方法的参数传递

来自分类Dev

如何在Javascript中将对象的方法作为参数传递

来自分类Dev

是否可以将匿名对象作为RMI方法的参数传递?

来自分类Dev

将对象及其方法之一作为参数传递

来自分类Dev

在Tcl中将特定对象的方法作为输入参数传递

来自分类Dev

NxBRE规则引擎,使用传递对象作为参数的调用方法

来自分类Dev

C# - 作为方法参数传递的对象更改状态

来自分类Dev

如何将要创建的对象作为 Java 方法的参数传递?

来自分类Dev

将参数对象作为参数传递的Javascript对象工厂方法

来自分类Dev

传递模板方法作为参数

来自分类Dev

传递枚举作为方法参数

来自分类Dev

传递模板方法作为参数

来自分类Dev

Ruby在对象上调用方法,而不是将对象作为方法的参数传递

来自分类Dev

如何传递对象属性作为参数?

来自分类Dev

常量对象不能作为var参数传递

来自分类Dev

在Java中将对象作为参数传递

来自分类Dev

将动态对象的字段作为参数传递

来自分类Dev

将对象列表作为单个参数传递

来自分类Dev

将临时对象作为参数传递(C ++)

来自分类Dev

将对象作为函数参数传递

来自分类Dev

Python调用函数作为对象的参数传递

来自分类Dev

展开对象以作为函数参数传递

来自分类Dev

将String对象作为参数传递

Related 相关文章

热门标签

归档