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::Concurrency和 Intel TBB 一起工作,因为这些concurrent_queues 是可复制构造的):

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