如何隐藏 C++ 中的类?

2023-11-22

假设我有 2 个类,我希望它们可见(在给定的头文件中),还有一个类是它们的祖先,我希望其中一个类仅对前面提到的两个类可见。在C++中如何实现不可见的类功能?


滥用class充当namespace会这样做。我不推荐这种模式。

class hidden_stuff {
private: // hide base from everyone
    struct base {
        // contents
    };
public:
    class derived1;
};
typedef class hidden_stuff::derived1 derived1;

class hidden_stuff::derived1
    : private hidden_stuff::base {}; // private inheritance required
            // or hidden_stuff::base is accessible as derived1::base

The real解决方案(尽管在技术上不能满足问题)

更好的解决方案是使用明确命名的namespace例如impl:: or detail::,这将向用户传达他们不应该在内部使用任何类,并阻止任何可能对重载等产生的不良影响。这就是大多数库(甚至标准库实现)向用户“隐藏”类的方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何隐藏 C++ 中的类? 的相关文章

  • ASP Core HttpClientFactory 模式使用客户端证书

    任何人都知道在使用时如何使用客户端证书HttpClientFactory 在我发现的所有示例中 您需要提供HttpMessageHandler in the HttpClient构造函数 使用时不可用HttpClientFactory se
  • 将 SQL Server varBinary 数据转换为字符串 C#

    我需要帮助弄清楚如何转换来自SQL服务器表列设置为varBinary 最大 转换为字符串以便将其显示在标签中 这是在C 我正在使用数据读取器 我可以使用以下方式提取数据 var BinaryString reader 1 我知道该列包含之前
  • “字符串”是什么意思?信息'

    我刚刚在查看定义时发现了这个PlatformNotSupportedException class 什么是string message意思是 据我所知是 是缩写Nullable lt gt but Nullable lt gt 只能应用于结
  • C++ 和序列化:有什么方法可以进行某种内省吗?

    我读过一些例子维基百科 http en wikipedia org wiki Type introspection C 2B 2B但我正在寻找一些现实生活中的例子 如何使用内省 为什么 它有助于编写干净的代码 以及代码本身 例如 有没有办法
  • 比较 LINQ to SQL 中的两个日期

    我有一个数据库 其中有一个名为会议的表 会议日期使用以下格式存储在此表中 May 2nd 2011 例如 格式为5 2 2011 我的要求是获取两个日期 例如 2011 年 4 月 25 日和 2011 年 5 月 2 日 之间的会议 并编
  • boost::asio::io_service 是否保留处理程序的顺序?

    Does boost asio io service http www boost org doc libs release doc html boost asio reference io service html保证处理程序的调用顺序与
  • 试图使用加密来混淆我的项目打破了它

    我试图尝试不同的混淆选项 为了做到这一点 我首先尝试了加密货币 以下是我遵循的步骤 打开加密向导并选择一些选项 选择我的解决方案文件 完成向导后 我看到有些 Dll 被很好地混淆了 但我的项目现在无法构建 我注意到的两件事是 我的文件夹中有
  • ASP.NET中如何访问除wwwroot以外的位置

    我可以使用访问服务器的物理位置Server MapPath 这给了我内部的物理路径wwwroot文件夹 我想将一些数据保存到同一服务器的另一个驱动器中D 驾驶 我想我无法获取以下位置的物理位置D 驾驶使用Server MapPath因为它位
  • 如何从Web JavaScript应用程序获取桌面C#程序中的变量

    我遇到一个问题 有两个应用程序 一种是 C 中的桌面应用程序 另一种是 javascript 中的 Web 应用程序 运行桌面应用程序中的一些变量或信息需要传输到Web应用程序 有谁知道如何解决这个问题 有人愿意提供更多细节来解决这个问题吗
  • 我可以在 C++ 中重写非虚函数吗

    我想知道我可以重写 C 中的非虚函数吗 因为我在使用 C 时发现了这个问题override关键字我的代码如下 class A public void say cout lt lt From A n class B public A publ
  • 三种 System.Drawing 方法表现出缓慢的绘制或闪烁:解决方案?或其他选择?

    我正在通过 System Drawing 进行一些绘图 但遇到了一些问题 我将数据保存在队列中 并将该数据绘制 绘制 到三个图片框中 此方法填充图片框 然后滚动图形 所以不要在以前的绘图上绘制 并且逐渐看起来更混乱 我找到了两种绘制图表的解
  • 除空字符串外的任何内容的正则表达式

    是否可以使用正则表达式来检测任何不是 空字符串 的内容 如下所示 string s1 string s2 string s3 string s4 etc 我知道我可以使用修剪等 但我想使用正则表达式 s 将匹配任何包含至少一个非空格字符的字
  • C 中的链表数组:初始化和插入?

    我需要创建一个链表数组 如图所示 这就是我到目前为止所做的 typedef struct Node int data struct Node next Node int main void Node link 5 for int q 0 q
  • 从视图模型调用方法的命令

    好吧 我倾向于避免使用命令 因为它们总是让我感到困惑 但我正在进行一个新项目 并且正在尝试正确构建它 并且在我看来没有任何代码隐藏 基本上我现在想做的就是连接一个按钮来触发一个命令 在我的视图模型上执行一些操作 但不知何故 如此简单的事情仍
  • 使用 _Alignas 进行结构成员对齐

    我想知道以下问题 是新的吗 Alignas结盟 C11 中的说明符适用于结构成员吗 我一直假设这么多 但彻底阅读了 N1570 公开草案似乎表明对齐说明符不能 出现在一个说明符限定符列表 这就是我所期望的 如果得到支持的话 我已经读过几遍语
  • #define 内存地址声明

    这个 define 语句有什么作用 它用于定义内存地址 但我不明白 uint32 t 部分 define GPxDAT uint32 t 0x6FC0 通常用于访问映射到地址空间的硬件寄存器 或者一些特定的内存地址 硬件寄存器应定义为vol
  • C++ 联合数组和变量?

    在C 中没有办法做这样的事情吗 union Scalar x y Scalar v 2 Where x v 0 and y v 1 既然您使用的是 C 而不是 C 并且它们具有相同的类型 为什么不直接将 x 设为对 v 0 的引用 将 y
  • 替换全局热键

    我有一个位于托盘中的应用程序 我想定义多个热键来触发我的程序中的事件 我从 AaronLS 在这个问题中的出色回答中找到了灵感 使用C 设置全局热键 https stackoverflow com a 27309185 3064934 如果
  • DataGridView 捕获用户行选择

    我在处理选择时遇到问题DataGridView 我的网格视图包含一个金额列 表单上有一个文本框 应显示所选网格视图行的总数 因此 我需要在用户选择 取消选择 gridview 行时捕获事件并相应地计算 添加 减去 金额 我找到了两种方法 使
  • C#:如何处理乱序 TCP 数据包?

    请有人解释一下如何处理乱序数据包 我使用原始套接字来捕获数据包 并在数据包到来时解析它们 但其中一些数据包的顺序错误 例如 ID 标志 16390 PSH ACK 16535 PSH ACK 16638 确认 16640 PSH ACK 1

随机推荐

  • 在Eclipse中,是否可以找到项目中采用某种参数类型的所有方法?

    这基本上就是我的问题 我正在参数化方法中将所有方法 ArrayList 转换为 HashMap 但我不想将所有 ArrayList 转换为 HashMap 因为有一些方法是在本地使用的 这更多的是出于好奇 但它会很有用 那么 在 Eclip
  • 带有图像

    我将 JSF 与 Primefaces 一起使用 我想使用仅包含图像的单选按钮按钮集 但我无法使其工作 这是代码
  • 我应该将 Maven 项目的应用程序配置文件放在哪里?

    我正在使用Maven 应用程序组装器用于从我的 Java 项目生成独立可执行文件的插件 应用程序读取配置文件 包括 Spring 文件 应用程序汇编器插件有一个选项 默认激活 可以将 etc 目录添加到应用程序的类路径中 但是我应该怎么做才
  • 来自类的 Java 资源与线程

    有什么区别 getClass getResource some resource file txt vs Thread currentThread getContextClassLoader getResource some resourc
  • 如何在 OpenCV 中找到二值骨架图像的端点?

    我有一个二进制像素的骨架 如下所示 我想找到该骨架端点的坐标 在本例中有四个 如果适用 请使用 Open CV 效率很重要 因为我正在从视频源中实时分析其中的许多内容 并且需要同时做许多其他事情 请注意 抱歉 上面的屏幕截图已调整了人工制品
  • ggplot2:将各个facet_wrap面保存为单独的绘图对象

    我是以下的忠实粉丝facet wrap 尽管在 R 中分割大数据框 绘制多个图并进行探索的速度很快 但它并不总是在纸张或幻灯片中呈现的最佳工具 我发现自己在比例 binwidths 和字体大小上浪费了很多时间 并最终在 inkscape 上
  • C# 创建没有 的 XML 输出文件

    我是 C 开发新手 所以这里可能是一个非常简单的问题 我试图获得这样的输出
  • 自定义 pip install 命令未运行

    我正在尝试为我正在编写的 pip 库运行一些预安装命令 我的安装文件如下所示 from setuptools import setup from setuptools command install import install class
  • 如何对 __m128 类型变量中的浮点元素取反(更改符号)?

    是否有任何单个指令或函数可以反转符号 m128 内的每个浮点数 IE a r0 r1 r2 r3 gt a r0 r1 r2 r3 我知道这可以通过 mm sub ps mm set1 ps 0 0 a 但它不是可能很慢吗 mm set1
  • 在WPF网格中绘制对角线

    我想我正在尝试在 WPF 中做一些相对简单的事情 但我无法弄清楚如何做 我认为我可能正处于将其过于复杂化的边缘 如果我有一个 3 行 3 列的网格 并且我想连接两个单元格的角以创建对角边框 那么最好的方法是什么 理想情况下 如果调整控件的大
  • 在 Angular 8 中,如何从浏览器控制台访问注入的服务?

    我正在使用 Angular 8 我想从浏览器控制台 Chrome 开发工具 访问注入的服务 我可以像这样从浏览器控制台访问注入器 ng probe document querySelector app root injector 我想在开发
  • 声音文件作为 android MediaPlayer 中的变量

    在学习 android java 的过程中 我想创建一个可以从原始文件夹中播放特定声音的函数 我试图将声音文件定义为字符串 以便可以重用该函数 但是我陷入了 无法解析符号 的困境 public class MainActivity exte
  • 与共享主键的一对一关系生成 n+1 个选择;有什么解决方法吗?

    想象一下关系数据库中有 2 个表 例如人员和计费 这些实体之间定义了一个 非强制性 OneToOne 关联 并且它们共享 Person 主键 即 PERSON ID 在 Person 和 Billing 中定义 并且它是后者的外键 通过命名
  • Java Socket和ServerSocket在使用端口上的区别

    在服务器端 我们使用 Socket server serverSocket accept 创建一个套接字 创建套接字后 我们可以创建一个新线程来处理该套接字的输入 输出流 因此 如果有进一步的连接请求进来 我们可以返回监听同一端口并创建新的
  • 这超出了 GitHub 的文件大小限制 [重复]

    这个问题在这里已经有答案了 我的 github 存储库中有一些大文件 我尝试添加 提交 推送 但推送命令给出了以下错误 远程 错误 文件 app dump sql 为 106 67 MB 这超出了 GitHub 的文件大小限制 100 00
  • 创建交互式登录会话

    我正在尝试创建一个类似于微软废弃的实用程序超快速用户切换器 download 它允许快速用户切换 而无需通过欢迎屏幕 我有一个使用未记录的工作实现WinStationConnectWAPI 以及WTSEnumerateSessions 但只
  • Caffe可以直接对图像的像素进行分类吗?

    我想将图像的像素分类为 是街道 或 不是街道 我有一些训练数据KITTI数据集我看到 Caffe 有一个IMAGE DATA图层类型 标签以与输入图像大小相同的图像形式存在 除了 Caffe 之外 我解决这个问题的第一个想法是在应该分类的像
  • 在 M1 Mac 上找不到 PyTables 的 HDF5 安装

    在 M1 Mac macOS Monterey 上运行12 4 Python 3 10 3 pip install tables Collecting tables Using cached tables 3 7 0 tar gz 8 2
  • 我是否必须在 Webstart 应用程序中显式调用 System.exit() ?

    最近我将 Swing 应用程序转换为 Webstart 该过程非常简单 但我发现在关闭所有窗口后 我的应用程序的 JVM 并未终止 线程转储显示有几个非守护线程 特别是 Swing 的 EDT AWT 和几个与 websart 相关的线程
  • 如何隐藏 C++ 中的类?

    假设我有 2 个类 我希望它们可见 在给定的头文件中 还有一个类是它们的祖先 我希望其中一个类仅对前面提到的两个类可见 在C 中如何实现不可见的类功能 滥用class充当namespace会这样做 我不推荐这种模式 class hidden