Ошибка метода async_write - PullRequest
1 голос
/ 22 мая 2011
void Chat::Send(uint8_t* buffer, int length){
        boost::asio::async_write(socket_,boost::asio::buffer(buffer,length),
            boost::bind(&Chat:Send, this,boost::asio::placeholders::error));
}

должно работать как в этом уроке .Но когда я пытаюсь построить проект, я получаю следующие ошибки

Error   1   error C2825: 'F': must be a class or namespace when followed by '::'    e:\boost_1_46_1\boost_1_46_1\boost\bind\bind.hpp    69
Error   2   error C2039: 'result_type' : is not a member of '`global namespace''    e:\boost_1_46_1\boost_1_46_1\boost\bind\bind.hpp    69
Error   3   error C2146: syntax error : missing ';' before identifier 'type'    e:\boost_1_46_1\boost_1_46_1\boost\bind\bind.hpp    69
Error   4   error C2208: 'boost::_bi::type' : no members defined using this type    e:\boost_1_46_1\boost_1_46_1\boost\bind\bind.hpp    69
Error   5   error C1903: unable to recover from previous error(s); stopping compilation e:\boost_1_46_1\boost_1_46_1\boost\bind\bind.hpp    69

Я даже не использую 'F', почему он продолжает говорить 'F': должен быть класс или пространство имен, когда следует '::«

1 Ответ

3 голосов
/ 22 мая 2011
boost::bind(&Chat:Send, this,boost::asio::placeholders::error));
               ^^^^^^ 

должно быть

boost::bind(&Chat::Send, this,boost::asio::placeholders::error));
               ^^^^^^

Обратите внимание на оператор разрешения области видимости для класса Chat.Ошибки компилятора, которые могут возникнуть при использовании boost::bind, очень запутаны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...