此博客均属原创或译文,欢迎转载但请注明出处 GithubPage:https://liukang325.github.io
在类的头文件中不暴露私有变量,目的一般有两个:
-
提供给别人的dll对应的头文件中,不希望在头文件中暴露私有变量的名称;
-
因为私有变量的类型需要包含另一个头文件,所以不希望在头文件中包含其它头文件;
一般可以用下面的方法来隐藏私有变量。
TWebSocketServer.h
class TWebSocketServer
{
public:
TWebSocketServer();
~TWebSocketServer();
void runServer(int port);
void stopServer();
private:
class TWebSocketServerImpl;
TWebSocketServerImpl *ptr;
};
TWebSocketServer.cpp
#include <websocketpp/config/asio_no_tls.hpp>
#include <websocketpp/server.hpp>
class TWebSocketServer::TWebSocketServerImpl
{
public:
TWebSocketServerImpl(){}
~TWebSocketServerImpl()
{
stopServer();
}
void runServer(int port)
{
// Set logging settings
echo_server.set_access_channels(websocketpp::log::alevel::all);
echo_server.clear_access_channels(websocketpp::log::alevel::frame_payload);
// Initialize Asio
echo_server.init_asio();
// Register our message handler
echo_server.set_message_handler(bind(&on_message, this, ::_1, ::_2));
// Listen on port 9002
echo_server.listen(port);
// Start the server accept loop
echo_server.start_accept();
// Start the ASIO io_service run loop
echo_server.run();
}
void stopServer()
{
echo_server.stop_listening();
}
private:
// Create a server endpoint
//在 #include <websocketpp/server.hpp> 不暴露在头文件中
server echo_server;
///////////////////////////////
TWebSocketServer::TWebSocketServer()
{
ptr = new TWebSocketServerImpl;
}
TWebSocketServer::~TWebSocketServer()
{
if(ptr)
{
delete ptr;
}
}
void TWebSocketServer::runServer(int port)
{
ptr->runServer(port);
}
void TWebSocketServer::stopServer()
{
ptr->stopServer();
}