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

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

 

原文链接: https://www.cnblogs.com/sshbit/p/13223856.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

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

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/361389

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 下午1:48
下一篇 2023年3月2日 下午1:48

相关推荐