struct中的concurrent_queue

时间:2013-03-20 15:36:55

标签: c++ vector queue

我想创建一个带有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 

有什么线索我该怎么办?谢谢!

1 个答案:

答案 0 :(得分:0)

首先,考虑一下实际是否需要concurrent_queue(而不是引用)的副本。一旦你确定你这样做,你可以尝试以下(C ++ 11,适用于MS ::Concurrency和英特尔TBB,因为那些concurrent_queue是可复制的):

connection_struct(const concurrent_queue<string> & queue) : message_queue(queue) {}