gpt4 book ai didi

c++ - 如何在 unique_ptr 上调用函数调用运算符?

转载 作者:搜寻专家 更新时间:2023-10-31 00:28:06 26 4
gpt4 key购买 nike

如果一个类有一个函数调用运算符返回一个容器的引用(大量编辑):

class client_connection { 
public:
concurrent_queue<T>& operator()() { return client; }
concurrent_queue<T> client;
};

另一个类的成员是 client_connection :

class remote {
public:
void get_version() {
auto d = ... something to generate data ...
client().push(d.begin(), d.end());
}
...
client_connection client;
};

这适用于 client作为 remote 的一部分构建目的。但是,如果您将所有权传递给 remote通过 unique_ptr怎么调用函数调用操作符?

将调用更改为 client()->push(d.begin(), d.end());生成的错误消息表明问题是因为推送在 unique_ptr 上, 而不是 client_connection .

使用 .get()现在正在处理底层对象但没有函数调用运算符:client.get()->push(m.begin(), m.end()); // error: ‘class client_connection<unsigned char>’ has no member named ‘push’

然而,尝试各种组合来调用函数调用运算符都失败了。如何在 unique_ptr 中包含的对象上调用函数调用运算符? ?

最佳答案

你这样做

client->operator()().push(m.begin(), m.end());

您需要实际调用运算符,因为您有一个指针。或者,取消引用唯一指针:

(*client)().push(m.begin(), m.end());

关于c++ - 如何在 unique_ptr 上调用函数调用运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46527559/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com