我想创建一个带有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
有什么线索我该怎么办?谢谢!
答案 0 :(得分:0)
首先,考虑一下实际是否需要concurrent_queue
(而不是引用)的副本。一旦你确定你这样做,你可以尝试以下(C ++ 11,适用于MS ::Concurrency
和英特尔TBB,因为那些concurrent_queue
是可复制的):
connection_struct(const concurrent_queue<string> & queue) : message_queue(queue) {}