Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误:没有名为';常量迭代器';在';类boost::asio::可变缓冲区';尝试使用boost::asio::async\u读取时_C++_Boost_C++11_Boost Asio - Fatal编程技术网

C++ 错误:没有名为';常量迭代器';在';类boost::asio::可变缓冲区';尝试使用boost::asio::async\u读取时

C++ 错误:没有名为';常量迭代器';在';类boost::asio::可变缓冲区';尝试使用boost::asio::async\u读取时,c++,boost,c++11,boost-asio,C++,Boost,C++11,Boost Asio,使用此代码时,我遇到编译错误。这很奇怪,因为它基本上是从我的另一个项目复制粘贴。有什么线索导致这一切吗 void Connection::asyncReceiveHeader() { Buffer* header = new Buffer(packetHeaderSize); ba::mutable_buffer buffer = ba::buffer(header->pointer(), header->size()); auto readHandler =

使用此代码时,我遇到编译错误。这很奇怪,因为它基本上是从我的另一个项目复制粘贴。有什么线索导致这一切吗

void Connection::asyncReceiveHeader()
{
    Buffer* header = new Buffer(packetHeaderSize);
    ba::mutable_buffer buffer = ba::buffer(header->pointer(), header->size());
    auto readHandler = bind(&Connection::headerReceived, this, ba::placeholders::error, ba::placeholders::bytes_transferred, header);

    ba::async_read(socket, buffer, readHandler); // Comment this line out and it compiles (this is the line 70)
}
错误:

C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp: In instantiation of 'class boost::asio::detail::consuming_buffers<boost::asio::mutable_buffer, boost::asio::mutable_buffer>':
C:\MinGW\libraries\boost-1.52\include/boost/asio/impl/read.hpp:209:46:   required from 'class boost::asio::detail::read_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp>, boost::asio::mutable_buffer, boost::asio::detail::transfer_all_t, boost::_bi::bind_t<void, boost::_mfi::mf3<void, network::Connection, const boost::system::error_code&, unsigned int, network::Buffer*>, boost::_bi::list4<boost::_bi::value<network::Connection*>, boost::arg<1> (*)(), boost::arg<2> (*)(), boost::_bi::value<network::Buffer*> > > >'
C:\MinGW\libraries\boost-1.52\include/boost/asio/impl/read.hpp:526:3:   required from 'void boost::asio::async_read(AsyncReadStream&, const MutableBufferSequence&, ReadHandler&&) [with AsyncReadStream = boost::asio::basic_stream_socket<boost::asio::ip::tcp>; MutableBufferSequence = boost::asio::mutable_buffer; ReadHandler = boost::_bi::bind_t<void, boost::_mfi::mf3<void, network::Connection, const boost::system::error_code&, unsigned int, network::Buffer*>, boost::_bi::list4<boost::_bi::value<network::Connection*>, boost::arg<1> (*)(), boost::arg<2> (*)(), boost::_bi::value<network::Buffer*> > >&]'
..\src\network\Connection.cpp:70:45:   required from here
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:150:5: error: no type named 'const_iterator' in 'class boost::asio::mutable_buffer'
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:247:36: error: no type named 'const_iterator' in 'class boost::asio::mutable_buffer'
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp: In instantiation of 'boost::asio::detail::consuming_buffers<Buffer, Buffers>::consuming_buffers(const Buffers&) [with Buffer = boost::asio::mutable_buffer; Buffers = boost::asio::mutable_buffer]':
C:\MinGW\libraries\boost-1.52\include/boost/asio/impl/read.hpp:158:60:   required from 'boost::asio::detail::read_op<AsyncReadStream, MutableBufferSequence, CompletionCondition, ReadHandler>::read_op(AsyncReadStream&, const MutableBufferSequence&, CompletionCondition, ReadHandler&) [with AsyncReadStream = boost::asio::basic_stream_socket<boost::asio::ip::tcp>; MutableBufferSequence = boost::asio::mutable_buffer; CompletionCondition = boost::asio::detail::transfer_all_t; ReadHandler = boost::_bi::bind_t<void, boost::_mfi::mf3<void, network::Connection, const boost::system::error_code&, unsigned int, network::Buffer*>, boost::_bi::list4<boost::_bi::value<network::Connection*>, boost::arg<1> (*)(), boost::arg<2> (*)(), boost::_bi::value<network::Buffer*> > >]'
C:\MinGW\libraries\boost-1.52\include/boost/asio/impl/read.hpp:497:61:   required from 'boost::asio::detail::read_op<AsyncReadStream, MutableBufferSequence, CompletionCondition, ReadHandler> boost::asio::detail::make_read_op(AsyncReadStream&, const MutableBufferSequence&, CompletionCondition, ReadHandler) [with AsyncReadStream = boost::asio::basic_stream_socket<boost::asio::ip::tcp>; MutableBufferSequence = boost::asio::mutable_buffer; CompletionCondition = boost::asio::detail::transfer_all_t; ReadHandler = boost::_bi::bind_t<void, boost::_mfi::mf3<void, network::Connection, const boost::system::error_code&, unsigned int, network::Buffer*>, boost::_bi::list4<boost::_bi::value<network::Connection*>, boost::arg<1> (*)(), boost::arg<2> (*)(), boost::_bi::value<network::Buffer*> > >]'
C:\MinGW\libraries\boost-1.52\include/boost/asio/impl/read.hpp:526:3:   required from 'void boost::asio::async_read(AsyncReadStream&, const MutableBufferSequence&, ReadHandler&&) [with AsyncReadStream = boost::asio::basic_stream_socket<boost::asio::ip::tcp>; MutableBufferSequence = boost::asio::mutable_buffer; ReadHandler = boost::_bi::bind_t<void, boost::_mfi::mf3<void, network::Connection, const boost::system::error_code&, unsigned int, network::Buffer*>, boost::_bi::list4<boost::_bi::value<network::Connection*>, boost::arg<1> (*)(), boost::arg<2> (*)(), boost::_bi::value<network::Buffer*> > >&]'
..\src\network\Connection.cpp:70:45:   required from here
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:157:58: error: 'class boost::asio::mutable_buffer' has no member named 'end'
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:157:58: error: 'class boost::asio::mutable_buffer' has no member named 'begin'
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:157:58: error: using invalid field 'boost::asio::detail::consuming_buffers<Buffer, Buffers>::begin_remainder_'
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:157:58: error: 'class boost::asio::mutable_buffer' has no member named 'begin'
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:161:7: error: 'class boost::asio::mutable_buffer' has no member named 'begin'
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:162:7: error: using invalid field 'boost::asio::detail::consuming_buffers<Buffer, Buffers>::begin_remainder_'
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp: In instantiation of 'boost::asio::detail::consuming_buffers<Buffer, Buffers>::consuming_buffers(const boost::asio::detail::consuming_buffers<Buffer, Buffers>&) [with Buffer = boost::asio::mutable_buffer; Buffers = boost::asio::mutable_buffer; boost::asio::detail::consuming_buffers<Buffer, Buffers> = boost::asio::detail::consuming_buffers<boost::asio::mutable_buffer, boost::asio::mutable_buffer>]':
C:\MinGW\libraries\boost-1.52\include/boost/asio/impl/read.hpp:177:67:   required from 'boost::asio::detail::read_op<AsyncReadStream, MutableBufferSequence, CompletionCondition, ReadHandler>::read_op(boost::asio::detail::read_op<AsyncReadStream, MutableBufferSequence, CompletionCondition, ReadHandler>&&) [with AsyncReadStream = boost::asio::basic_stream_socket<boost::asio::ip::tcp>; MutableBufferSequence = boost::asio::mutable_buffer; CompletionCondition = boost::asio::detail::transfer_all_t; ReadHandler = boost::_bi::bind_t<void, boost::_mfi::mf3<void, network::Connection, const boost::system::error_code&, unsigned int, network::Buffer*>, boost::_bi::list4<boost::_bi::value<network::Connection*>, boost::arg<1> (*)(), boost::arg<2> (*)(), boost::_bi::value<network::Buffer*> > >; boost::asio::detail::read_op<AsyncReadStream, MutableBufferSequence, CompletionCondition, ReadHandler> = boost::asio::detail::read_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp>, boost::asio::mutable_buffer, boost::asio::detail::transfer_all_t, boost::_bi::bind_t<void, boost::_mfi::mf3<void, network::Connection, const boost::system::error_code&, unsigned int, network::Buffer*>, boost::_bi::list4<boost::_bi::value<network::Connection*>, boost::arg<1> (*)(), boost::arg<2> (*)(), boost::_bi::value<network::Buffer*> > > >]'
C:\MinGW\libraries\boost-1.52\include/boost/asio/impl/read.hpp:497:61:   required from 'boost::asio::detail::read_op<AsyncReadStream, MutableBufferSequence, CompletionCondition, ReadHandler> boost::asio::detail::make_read_op(AsyncReadStream&, const MutableBufferSequence&, CompletionCondition, ReadHandler) [with AsyncReadStream = boost::asio::basic_stream_socket<boost::asio::ip::tcp>; MutableBufferSequence = boost::asio::mutable_buffer; CompletionCondition = boost::asio::detail::transfer_all_t; ReadHandler = boost::_bi::bind_t<void, boost::_mfi::mf3<void, network::Connection, const boost::system::error_code&, unsigned int, network::Buffer*>, boost::_bi::list4<boost::_bi::value<network::Connection*>, boost::arg<1> (*)(), boost::arg<2> (*)(), boost::_bi::value<network::Buffer*> > >]'
C:\MinGW\libraries\boost-1.52\include/boost/asio/impl/read.hpp:526:3:   required from 'void boost::asio::async_read(AsyncReadStream&, const MutableBufferSequence&, ReadHandler&&) [with AsyncReadStream = boost::asio::basic_stream_socket<boost::asio::ip::tcp>; MutableBufferSequence = boost::asio::mutable_buffer; ReadHandler = boost::_bi::bind_t<void, boost::_mfi::mf3<void, network::Connection, const boost::system::error_code&, unsigned int, network::Buffer*>, boost::_bi::list4<boost::_bi::value<network::Connection*>, boost::arg<1> (*)(), boost::arg<2> (*)(), boost::_bi::value<network::Buffer*> > >&]'
..\src\network\Connection.cpp:70:45:   required from here
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:172:32: error: using invalid field 'boost::asio::detail::consuming_buffers<Buffer, Buffers>::begin_remainder_'
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:172:32: error: 'class boost::asio::mutable_buffer' has no member named 'begin'
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:174:38: error: no type named 'const_iterator' in 'class boost::asio::mutable_buffer'
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:175:38: error: no type named 'const_iterator' in 'class boost::asio::mutable_buffer'
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:176:5: error: using invalid field 'boost::asio::detail::consuming_buffers<Buffer, Buffers>::begin_remainder_'
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:174:38: error: no type named 'const_iterator' in 'class boost::asio::mutable_buffer'
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:175:38: error: no type named 'const_iterator' in 'class boost::asio::mutable_buffer'
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:“类boost::asio::detail::consuming_buffers”的实例化中:
C:\MinGW\libraries\boost-1.52\include/boost/asio/impl/read.hpp:209:46:必须来自“类boost::asio::detail::read\u op”
C:\MinGW\libraries\boost-1.52\include/boost/asio/impl/read.hpp:526:3:从“void boost::asio::asio::async_read(AsyncReadStream&,const MutableBufferSequence&,ReadHandler&)[with AsyncReadStream boost::asio::basic_stream_socket;MutableBufferSequence=boost::asio::mutable_buffer;ReadHandler=boost:(u bi::bind_t&]
..\src\network\Connection.cpp:70:45:此处为必填项
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:150:5:错误:在“类boost::asio::可变_buffer”中没有名为“const_iterator”的类型
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming\u buffers.hpp:247:36:错误:在“class boost::asio::mutable\u buffer”中没有名为“const\u iterator”的类型
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:“在”boost::asio::detail::consuming_buffers::const buffers&“[with Buffer=boost::asio::mutable_Buffer;buffers=boost::asio::mutable_Buffer]”的实例化中:
C:\MinGW\libraries\boost-1.52\include/boost/asio/impl/read.hpp:158:60:必须来自“boost::asio::detail::read_op::read_op”(AsyncReadStream&,const MutableBufferSequence&,CompletionCondition,ReadHandler&)[使用AsyncReadStream=boost::asio::basic\u stream\u socket;MutableBufferSequence=boost::asio::mutable\u buffer;CompletionCondition=boost::asio::detail::transfer\u all\u t;ReadHandler=boost:\u bi::bind\u t]'
C:\MinGW\libraries\boost-1.52\include/boost/asio/impl/read.hpp:497:61:从'boost::asio::detail::read_op boost::asio::detail::make_read_op'中必须输入AsyncReadStream&,const MutableBufferSequence&,CompletionCondition,ReadHandler)[使用AsyncReadStream=boost::asio::basic\u stream\u socket;MutableBufferSequence=boost::asio::mutable\u buffer;CompletionCondition=boost::asio::detail::transfer\u all\u t;ReadHandler=boost:\u bi::bind\u t]'
C:\MinGW\libraries\boost-1.52\include/boost/asio/impl/read.hpp:526:3:从“void boost::asio::asio::async_read(AsyncReadStream&,const MutableBufferSequence&,ReadHandler&)[with AsyncReadStream boost::asio::basic_stream_socket;MutableBufferSequence=boost::asio::mutable_buffer;ReadHandler=boost:(u bi::bind_t&]
..\src\network\Connection.cpp:70:45:此处为必填项
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:157:58:错误:“类boost::asio::mutable_buffer”没有名为“end”的成员
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:157:58:错误:“类boost::asio::mutable_buffer”没有名为“begin”的成员
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:157:58:错误:使用无效字段'boost::asio::detail::consuming_buffers::begin_rements"
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:157:58:错误:“类boost::asio::mutable_buffer”没有名为“begin”的成员
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:161:7:错误:“类boost::asio::mutable_buffer”没有名为“begin”的成员
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:162:7:错误:使用无效字段'boost::asio::detail::consuming_buffers::begin_rements"
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming\u buffers.hpp:“boost::asio::detail::consuming\u buffers::const boost::asio::detail::consuming\u buffers&”的实例化中[with Buffer=boost::asio::mutable_Buffer;Buffers=boost::asio::mutable_Buffer;boost::asio::detail::consuming_Buffers=boost::asio::detail::consuming_Buffers]:
C:\MinGW\libraries\boost-1.52\include/boost/asio/impl/read.hpp:177:67:必须来自“boost::asio::detail::read_op::read_op”(boost::asio::detail::read_op&)[使用AsyncReadStream=boost::asio::basic\u stream\u socket;MutableBufferSequence=boost::asio::mutable\u buffer;CompletionCondition=boost::asio::detail::transfer\u all\u t;ReadHandler=boost::\u bi::bind\u t;boost::asio::detail::read\u op=boost::asio::detail::read\u op]'
C:\MinGW\libraries\boost-1.52\include/boost/asio/impl/read.hpp:497:61:从'boost::asio::detail::read_op boost::asio::detail::make_read_op'中必须输入AsyncReadStream&,const MutableBufferSequence&,CompletionCondition,ReadHandler)[使用AsyncReadStream=boost::asio::basic\u stream\u socket;MutableBufferSequence=boost::asio::mutable\u buffer;CompletionCondition=boost::asio::detail::transfer\u all\u t;ReadHandler=boost:\u bi::bind\u t]'
C:\MinGW\libraries\boost-1.52\include/boost/asio/impl/read.hpp:526:3:从“void boost::asio::asio::async_read(AsyncReadStream&,const MutableBufferSequence&,ReadHandler&)[with AsyncReadStream boost::asio::basic_stream_socket;MutableBufferSequence=boost::asio::mutable_buffer;ReadHandler=boost:(u bi::bind_t&]
..\src\network\Connection.cpp:70:45:此处为必填项
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:172:32:错误:使用无效字段'boost::asio::detail::consuming_buffers::begin_rements"
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming_buffers.hpp:172:32:错误:“类boost::asio::mutable_buffer”没有名为“begin”的成员
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming\u buffers.hpp:174:38:错误:在“class boost::asio::mutable\u buffer”中没有名为“const\u iterator”的类型
C:\MinGW\libraries\boost-1.52\include/boost/asio/detail/consuming\u buffers.hpp:175:38:错误:没有名为“const”的类型_
void Connection::asyncReceiveHeader()
{
    Buffer* header = new Buffer(packetHeaderSize);
    ba::mutable_buffers_1 buffer = ba::buffer(header->pointer(), header->size());
    auto readHandler = bind(&Connection::headerReceived, this, ba::placeholders::error, ba::placeholders::bytes_transferred, header);

    ba::async_read(socket, buffer, readHandler);
}