gpt4 book ai didi

c++ - 避免在 hpp 文件中暴露私有(private)成员变量

转载 作者:行者123 更新时间:2023-11-30 02:33:24 25 4
gpt4 key购买 nike

我已经实现了一个类 buffer_manager。此类的目的是为我的 udp_clienttcp_client 应用程序提供缓冲区。

缓冲区管理器.hpp

#ifndef BUFFER_MANAGER_H
#define BUFFER_MANAGER_H

#include <iostream>
#include <exception>
#include <boost/array.hpp>
#include <boost/algorithm/hex.hpp>
#include <algorithm>
#include <iomanip>


class buffer_manager
{
public:
typedef boost::array<unsigned char, 4096> m_array_type;
buffer_manager();
~buffer_manager();
void message_buffer(m_array_type &recv_buf);
buffer_manager::m_array_type & get_recieve_array();
std::string & get_message_string();

private:
std::string m_message;
m_array_type m_recv_buf;
};

#endif //BUFFER_MANAGER_H

缓冲区管理器.cpp

#include <iostream>                                                                                                                                                                                                
#include <boost/array.hpp>
#include <boost/algorithm/hex.hpp>
#include <algorithm>
#include "buffer_manager.hpp"

buffer_manager::buffer_manager()
{

}
buffer_manager::~buffer_manager()
{

}
void buffer_manager::message_buffer(m_array_type &recv_buf)
{
boost::algorithm::hex(recv_buf.begin(), recv_buf.end(), back_inserter(m_message));
}

buffer_manager::m_array_type& buffer_manager::get_recieve_array()
{
return m_recv_buf;
}

std::string & buffer_manager::get_message_string()
{
return m_message;
}

有人告诉我,如果你不打算继承这个类,就没有必要在头文件中暴露成员变量。

std::string m_message;
m_array_type m_recv_buf;

在不暴露头文件中的私有(private)成员变量的情况下,有什么选择可以做到这一点?这种方法的优点是什么?

最佳答案

这不太正确。有更高级的技术(如 pimpl 习惯用法或虚拟基类),但对于正常使用,它们必须位于头文件中。

关于c++ - 避免在 hpp 文件中暴露私有(private)成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35544514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com