class Example {
//...
static auto make = []() -> std::shared_ptr<receiveObject> {
return std::make_shared<receiveObject>(Params::EchoBufferSize);
};
static auto recycle = [](std::shared_ptr<receiveObject> o) {
//nothing for now
};
recycle::shared_pool<receiveObject> receivePool(make, recycler);
};
但我得到
In file included from /home/project/AIPTCPClient.cpp:57:0:
/home/project/AIPTCPClient.h:312:57: error: 'make' is not a type
recycle::shared_pool<receiveObject> receivePool(make, recycler);
^~~~
/home/project/AIPTCPClient.h:312:63: error: 'recycler' is not a type
recycle::shared_pool<receiveObject> receivePool(make, recycler);
^~~~~~~~
正如你所看到的共享池 https://github.com/steinwurf/recycle/blob/master/src/recycle/shared_pool.hpp#L91,它需要两个函数,这就是我传递 lambda 的原因。但 C++ 抱怨它们应该是类型。我不明白。为什么构造函数需要类型而不是对象?
默认成员初始值设定项 https://en.cppreference.com/w/cpp/language/data_members#Member_initialization(C++11 起) 仅支持花括号初始化器和等号初始化器,但不支持括号初始化器;所以改变
recycle::shared_pool<receiveObject> receivePool(make, recycler);
to
recycle::shared_pool<receiveObject> receivePool{make, recycler};
or
recycle::shared_pool<receiveObject> receivePool = recycle::shared_pool<receiveObject>(make, recycler);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)