如果一个类有一个函数调用运算符,该运算符返回对容器的引用(已经过大量删节):
如果使用client作为remote对象的一部分构建,则此方法可行。但是,如果您通过unique_ptr将所有权传递给remote,那么如何调用函数调用运算符?
将调用更改为client()->push(d.begin(), d.end());后,生成的错误消息表明问题是因为推送在unique_ptr上而不是client_connection上。
现在,在底层对象上使用.get()可以工作,但没有函数调用运算符:client.get()->push(m.begin(), m.end()); // error: ‘class client_connection’ has no member named ‘push’
然而,尝试各种组合来调用函数调用运算符都失败了。如何在包含在unique_ptr中的对象上调用函数调用运算符?
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对象的一部分构建,则此方法可行。但是,如果您通过unique_ptr将所有权传递给remote,那么如何调用函数调用运算符?
将调用更改为client()->push(d.begin(), d.end());后,生成的错误消息表明问题是因为推送在unique_ptr上而不是client_connection上。
现在,在底层对象上使用.get()可以工作,但没有函数调用运算符:client.get()->push(m.begin(), m.end()); // error: ‘class client_connection’ has no member named ‘push’
然而,尝试各种组合来调用函数调用运算符都失败了。如何在包含在unique_ptr中的对象上调用函数调用运算符?
client->()
。然而,这样的语法是无效的。 - John