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();
    }
  • 相关阅读:
    Python入门day41——进程线程高阶
    使用React全家桶搭建一个后台管理系统
    基于 React 开发了一个 Markdown 文档站点生成工具
    The Annual Summary Of 2019
    INHERITED AND NON-INHERITED IN CSS
    组件设计 —— 重新认识受控与非受控组件
    React 现代化测试
    如何使页面交互更流畅
    React Hooks 深入系列
    你不知道的 requestIdleCallback
  • 原文地址:https://www.cnblogs.com/sshbit/p/13223856.html
Copyright © 2011-2022 走看看