クラスは、コンテナ(重く編集さ)への参照を返す関数呼び出し演算子を持っている場合:unique_ptrでどのように関数呼び出し演算子を呼び出しますか?
class client_connection {
public:
concurrent_queue<T>& operator()() { return client; }
concurrent_queue<T> client;
};
そしてのメンバーを持っている別のクラス:
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
、ない上にあるため、問題があることを示唆しています。 .get()
を使用して
は今、基礎となるオブジェクトではなく、関数呼び出し演算子なしで働いている:client.get()->push(m.begin(), m.end()); // error: ‘class client_connection<unsigned char>’ has no member named ‘push’
しかし、すべてが失敗関数呼び出し演算子を呼び出すために様々な組み合わせをしようとしています。 unique_ptr
に含まれるオブジェクトの関数呼び出し演算子をどのように呼び出すのですか?
[mcve]を入力してください。 – Barry
一般的には、unique_ptr-> operator()(args ...)を使う必要があります。 – OutOfBound
@Barry私は何かを呼び出す方法を尋ねるときに完全な例を提供することができますか?無関係なクラスの画面でも、読者は問題がどこにあるかを調べることになります。 –