【发布时间】:2018-07-20 01:21:36
【问题描述】:
在 C++11 中工作让我觉得自己像个白痴。
我正在为 Boost Socket (boost::asio::ip::udp::socket) 编写一个简单的包装类。我正在包装 Socket 的函数之一,open()。它需要一个protocol_type。查看 Boost 标头,它的命名空间应该是 boost::asio::。我包含 boost/asio/basic_socket.hpp 只是为了更好地衡量,因为它包含“protocol_type”的具体定义。
gcc 说“命名空间‘boost::asio’中的‘protocol_type’没有命名类型”。我已经尝试了数十个标头和更多名称空间来解决它。这正是我所拥有的:
#include <boost/asio.hpp>
#include <boost/asio/basic_socket.hpp>
namespace sprocketa{
class BoostSocketWrapper {
public:
/**
* @brief Constructor that creates the Boost Socket
*
* @param ioService
*/
BoostSocketWrapper(boost::asio::io_service& ioService);
// with the exception of "virtual", this is the exact same signature as in the Boost Socket class
virtual void open( const boost::asio::basic_socket::protocol_type & protocol = boost::asio::protocol_type() );
private:
std::unique_ptr<boost::asio::ip::udp::socket> theSocket = nullptr;
};
}
有谁知道如何解决这个问题?
【问题讨论】:
标签: c++11 boost boost-asio