• 【转载】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安装
    php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法
    关闭sublime自动检测更新提示
    Linux系统基本命令操作汇总
    jQuery各版本CDN
    【分享】每个 Web 开发者在 2021 年必须拥有 15 个 VSCode 扩展
    React & Redux 实战 Reminder Pro 项目 免费视频教程(5 个视频)
    Redux 入门教程(React 进阶)(20 个视频)
    Nodejs + Express + MongoDB 基础篇(17 个视频)
    轻松学 nodejs
  • 原文地址:https://www.cnblogs.com/sshbit/p/13223856.html
Copyright © 2020-2023  润新知