C++ 即使成员lambda引用该对象,该对象是否也会被解构?

C++ 即使成员lambda引用该对象,该对象是否也会被解构?,c++,C++,我有一个非常复杂的人生问题。我有一个叫做Request的类,它看起来像这样 class Request { private: std::function<void(std::vector<uint8_t> buffer)> messageCallback; public: void onMessage(std::function<void(std::vector<uint8_t> buffer)>

我有一个非常复杂的人生问题。我有一个叫做Request的类,它看起来像这样

class Request {
    private:
        std::function<void(std::vector<uint8_t> buffer)> messageCallback;

    public:
        void onMessage(std::function<void(std::vector<uint8_t> buffer)> callback);
};
类请求{
私人:
std::函数messageCallback;
公众:
void onMessage(std::函数回调);
};
然后在每次新请求时,我都会像下面那样初始化它

void onRequest() {
    Request req;

    req.onMessage([&](std::vector<uint8_t> buffer) {
        std::cout << req.testMember << "\n";
        // Do Work
    });
}
void onRequest(){
请求请求;
请求onMessage([&](标准::向量缓冲区){

STD::是的,它真的消失了。<代码>消息“/CODE”块直到完成了吗?如果是这样的话,那就不成问题了。如果你需要一个指针包装器来处理你的解除分配。@ TADMAN,那么,将实例推到一个全局向量中,使它存活,然后在流结束时将它从向量中删除。@ TADMAN是非块的。ing。如果它不在范围内,则会被清除,没有异常。您可以使用
std::unique_ptr
std::shared_ptr
堆分配来包含它,并将其作为副本传递。请注意,您将
缓冲区作为副本传递?这似乎是错误的。