If a class has a function call operator that returns a reference to a container (heavily redacted):
class client_connection {
public:
concurrent_queue<T>& operator()() { return client; }
concurrent_queue<T> client;
};
And another class which has a member of client_connection:
class remote {
public:
void get_version() {
auto d = ... something to generate data ...
client().push(d.begin(), d.end());
}
...
client_connection client;
};
This works if client is constructed as part of the remote object. However if you pass ownership to remote via a unique_ptr how do you call the function call operator?
Upon changing the call to client()->push(d.begin(), d.end()); the resulting error message suggests that the issue is because the push is on the unique_ptr, not the client_connection.
Using .get() is now working on the underlying object but without function call operator: client.get()->push(m.begin(), m.end()); // error: ‘class client_connection<unsigned char>’ has no member named ‘push’
However trying various combinations to invoke the function call operator all fail. How do you call the function call operator on an object contained in a unique_ptr?
Aucun commentaire:
Enregistrer un commentaire