0

私は、concurrent_queue と接続ポインターを含む接続構造体を作成したいと考えています。未知数の接続があるため、この構造体はベクトルにプッシュバックされます。

ベクトルと構造体:

        struct connection_struct {
            concurrent_queue<string> messages_queue;
            connection_ptr con;
            connection_struct(concurrent_queue<string> queue) {
                messages_queue = queue;
            }
        };

        std::vector<connection_struct> allConnections;

これはコンパイルできますが、構造体を作成すると、コンパイルできなくなります。次の方法で構造体を作成します。

                boost::thread_group message_workers;
                concurrent_queue<string> message_queue(&message_workers);

                connection_struct viewer(message_queue);

コンパイルエラーは大きいですが、これは関連するビットだと思います:

In constructor ‘websocketpp::broadcast::handler<endpoint_type>::connection_struct::connection_struct(concurrent_queue<std::basic_string<char> >) [with endpoint_type = websocketpp::endpoint<websocketpp::role::server, websocketpp::socket::tls>]’:
broadcast_handler.hpp:284:21: note: synthesized method ‘concurrent_queue<std::basic_string<char> >& concurrent_queue<std::basic_string<char> >::operator=(concurrent_queue<std::basic_string<char> >&)’ first required here 

私が何をすべきか手がかりはありますか?ありがとう!

4

1 に答える 1

0

まず第一に、あなたが実際にあなたのコピーを(それらへの参照concurrent_queueではなく)欲しいかどうか考えてみてください。確認したら、次のことを試すことができます (C++11、MSおよび Intel TBB で動作するため、それらはコピー構築可能です)。::Concurrencyconcurrent_queue

connection_struct(const concurrent_queue<string> & queue) : message_queue(queue) {} 
于 2013-03-20T15:49:04.143 に答える