C++跳过代码行?

Nat*_*ehr 7 c++ gcc g++ skip

背景

我正在用C++编写一个多线程的websocket服务器.

问题

当我尝试集成我的HTTP解析器时,MKFAHTTPRequest Request( std::string( Buffer ) );在执行期间完全跳过.

我已经清理了项目并添加了-Wall和-Werror(它应该告诉我这Request是一个未使用的变量,但它没有).

void operator()(){
    while( true ){
        if( m_Socket->is_open() ){
            char Buffer[1024]; 

            boost::system::error_code Error; 

            std::cout << "MKFAConnection::operator()() - Reading..." << std::endl;
            m_Socket->read_some( boost::asio::buffer( Buffer, sizeof( Buffer ) ), Error ); 

            if( !Error ){
                // This line is getting skipped!?!?!?
                MKFAHttpRequest Request( std::string( Buffer ) );

                m_Socket->write_some( boost::asio::buffer( std::string( "Hello World" ) ) ); 

            } else break; 

        } else break; 

    }

}
Run Code Online (Sandbox Code Playgroud)

Rob*_*obᵩ 10

MKFAHttpRequest Request( std::string( Buffer ) );
Run Code Online (Sandbox Code Playgroud)

这条线不符合你的想法.您认为它定义了一个名为Requesttype MKFAHttpRequest的对象,并使用类型的临时对象初始化该对象std::string.

实际上,它声明了一个名为的函数Request,它接受一个类型的参数std::string并返回一个类型的对象MKFAHttpRequest.

这与最令人烦恼的解析(或可能是一个例子)有关.

也许其中一个会让它变得更好:

MKFAHttpRequest Request( (std::string( Buffer )) );
MKFAHttpRequest Request{ std::string( Buffer ) };
MKFAHttpRequest Request = std::string( Buffer );
MKFAHttpRequest Request = MKFAHttpRequest(std::string( Buffer ));
Run Code Online (Sandbox Code Playgroud)

参考:http://en.wikipedia.org/wiki/Most_vexing_parse