zoukankan      html  css  js  c++  java
  • 【转载】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();
    }
  • 相关阅读:
    Java实现 LeetCode 209 长度最小的子数组
    Java实现 蓝桥杯 图书排列(全排列)
    Java实现 蓝桥杯 图书排列(全排列)
    Java实现 蓝桥杯 图书排列(全排列)
    C++11 FAQ中文版--转
    rtsp交互命令简介及过程参数描述
    PS流格式
    经典系统windows xp sp3官方原版下载(附XP序列号)
    Darwin Streaming Server 简介
    jrtplib跨网络通讯NAT穿透问题解决方法
  • 原文地址:https://www.cnblogs.com/sshbit/p/13223856.html
Copyright © 2011-2022 走看看