【转载】c++私有类创建

在类的头文件中不暴露私有变量,目的一般有两个: 
1. 提供给别人的dll对应的头文件中,不希望在头文件中暴露私有变量的名称; 
2. 因为私有变量的类型需要包含另一个头文件,所以不希望在头文件中包含其它头文件;
一般可以用下面的方法来隐藏私有变量。
 
  在头文件中封装接口:
 
TWebSocketServer.h
 
1
2
3
4
5
6
7
8
9
10
11
12
13
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();
}
复制代码

 

posted @   youlin  阅读(1273)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示