C++ 中嵌套类型/类的前向声明

2024-02-21

我最近陷入了这样的情况:

class A
{
public:
    typedef struct/class {…} B;
…
    C::D *someField;
}

class C
{
public:
    typedef struct/class {…} D;
…
    A::B *someField;
}

通常你可以声明一个类名:

class A;

但是你不能转发声明嵌套类型,以下会导致编译错误。

class C::D;

有任何想法吗?


你做不到,这是C++语言的一个漏洞。您必须取消至少一个嵌套类的嵌套。

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

C++ 中嵌套类型/类的前向声明 的相关文章

  • 如何在 Android NDK 中创建新的 NativeWindow 而无需 Android 操作系统源代码?

    我想编译一个 Android OpenGL 控制台应用程序 您可以直接从控制台启动 Android x86 运行 或者从 Android x86 GUI 内的 Android 终端应用程序运行 这个帖子 如何在 Android NDK 中创
  • C++:重写已弃用的虚拟方法时出现弃用警告

    我有一个纯虚拟类 它有一个纯虚拟方法 应该是const 但不幸的是不是 该接口位于库中 并且该类由单独项目中的其他几个类继承 我正在尝试使用这个方法const不会破坏兼容性 至少在一段时间内 但我找不到在非常量方法重载时产生警告的方法 以下
  • 构造函数中显式关键字的使用

    我试图了解 C 中显式关键字的用法 并查看了这个问题C 中的explicit关键字是什么意思 https stackoverflow com questions 121162 但是 那里列出的示例 实际上是前两个答案 对于用法并不是很清楚
  • 如何使用recv()检测客户端是否仍然连接(并且没有挂起)?

    我写了一个多客户端服务器程序C on SuSE Linux 企业服务器 12 3 x86 64 我为每个客户端使用一个线程来接收数据 我的问题是 我使用一个终端来运行服务器 并使用其他几个终端来运行服务器telnet到我的服务器 作为客户端
  • 暂停下载线程

    我正在用 C 编写一个非常简单的批量下载程序 该程序读取要下载的 URL 的 txt 文件 我已经设置了一个全局线程和委托来更新 GUI 按下 开始 按钮即可创建并启动该线程 我想要做的是有一个 暂停 按钮 使我能够暂停下载 直到点击 恢复
  • 检查算术运算中的溢出情况[重复]

    这个问题在这里已经有答案了 可能的重复 检测 C C 中整数溢出的最佳方法 https stackoverflow com questions 199333 best way to detect integer overflow in c
  • 如何识别 WPF 文本框中的 ValidationError 工具提示位置

    我添加了一个箭头来指示工具提示中的文本框 当文本框远离屏幕边缘时 这非常有效 但是当它靠近屏幕边缘时 工具提示位置发生变化 箭头显示在左侧 Here is the Image Correct as expected since TextBo
  • 在 2D 中将一个点旋转另一个点

    我想知道当一个点相对于另一个点旋转一定角度时如何计算出新的坐标 我有一个块箭头 想要将其相对于箭头底部中间的点旋转角度 theta 这是允许我在两个屏幕控件之间绘制多边形所必需的 我无法使用和旋转图像 从我到目前为止所考虑的情况来看 使问题
  • 在非活动联合成员上使用“std::addressof”是否定义明确[重复]

    这个问题在这里已经有答案了 下面的代码是尝试实现constexpr的版本offsetof在 C 11 中 它可以在 gcc 7 2 0 和 clang 5 0 0 中编译 这取决于申请std addressof工会非活跃成员的成员 这是明确
  • Azure 事件中心 - 按顺序接收事件

    我使用下面的代码从 Azure Event Hub 接收事件 https learn microsoft com en us azure event hubs event hubs dotnet framework getstarted s
  • 如何重置捕获像素的值

    我正在尝试创建一个 C 函数 该函数返回屏幕截图位图中每四个像素的 R G 和 B 值 这是我的代码的一部分 for int ix 4 ix lt 1366 ix ix 4 x x 4 for int iy 3 iy lt 768 iy i
  • 生产代码中的 LRU 实现

    我有一些 C 代码 需要使用 LRU 技术实现缓存替换 目前我知道两种实现LRU缓存替换的方法 每次访问缓存数据时使用时间戳 最后比较替换时的时间戳 使用缓存项的堆栈 如果最近访问过它们 则将它们移动到顶部 因此最后底部将包含 LRU 候选
  • 为什么我不应该对不是由 malloc() 分配的变量调用 free() ?

    我在某处读到 使用它是灾难性的free删除不是通过调用创建的对象malloc 这是真的 为什么 这是未定义的行为 永远不要尝试它 让我们看看当您尝试时会发生什么free 自动变量 堆管理器必须推断出如何获取内存块的所有权 为此 它要么必须使
  • 当模板类不包含可用的成员函数时,如何在编译时验证模板参数?

    我有以下模板struct template
  • 如何挤出平面 2D 网格并赋予其深度

    我有一组共面 连接的三角形 即二维网格 现在我需要将其在 z 轴上挤出几个单位 网格由一组顶点定义 渲染器通过与三角形数组匹配来理解这些顶点 网格示例 顶点 0 0 0 10 0 0 10 10 0 0 10 0 所以这里我们有一个二维正方
  • 如何一步步遍历目录树?

    我发现了很多关于遍历目录树的示例 但我需要一些不同的东西 我需要一个带有某种方法的类 每次调用都会从目录返回一个文件 并逐渐遍历目录树 请问我该怎么做 我正在使用函数 FindFirstFile FindNextFile 和 FindClo
  • 尚未处理时调用 Form 的 Invoke 时出现 ObjectDisposeException

    我们得到一个ObjectDisposedException从一个电话到Invoke在尚未处理的表格上 这是一些演示该问题的示例代码 public partial class Form2 Form void Form2 Load object
  • 当前的 x86 架构是否支持非临时加载(来自“正常”内存)?

    我知道有关此主题的多个问题 但是 我没有看到任何明确的答案或任何基准测量 因此 我创建了一个处理两个整数数组的简单程序 第一个数组a非常大 64 MB 第二个数组b很小 无法放入 L1 缓存 程序迭代a并将其元素添加到相应的元素中b在模块化
  • 运算符“==”不能应用于“int”和“string”类型的操作数

    我正在编写一个程序 我想到了一个数字 然后计算机猜测了它 我一边尝试一边测试它 但我不断收到不应该出现的错误 错误是主题标题 我使用 Int Parse 来转换我的字符串 但我不知道为什么会收到错误 我知道它说 不能与整数一起使用 但我在网
  • 实例化 Microsoft.Office.Interop.Excel.Application 对象时出现错误:800700c1

    实例化 Microsoft Office Interop Excel Application 以从 winforms 应用程序生成 Excel 时 出现以下错误 这之前是有效的 但突然间它停止工作了 尽管代码和 Excel 版本没有变化 我

随机推荐

  • 在两个闪亮的应用程序之间切换

    所以我有两个独立的onefileshinyApps 带有 UI 和服务器 位于一个函数内 现在我需要做的是在第一个应用程序中调用第二个应用程序 这是一个简单的示例 功能被简化以显示我想要实现的功能 appOne lt function ap
  • 在汇编中仅设置零标志,不影响其他标志

    我需要在程序集中设置零标志 但它不应该更改任何其他标志 所以我正在考虑做pushf 将其弹出到eax 但我不知道如何为标志reg赋予新值 我能想到的 pushf pop eax or eax 000 1 00 set the locatio
  • 使用 nvm 使 node.js 文件可执行的最佳方法

    我在用着nvm https github com creationix nvm管理我的节点版本 我的node js可执行文件曾经像这样被sha bang ed usr local bin node但现在看来我必须做类似的事情 Users
  • 将字符串拆分为数组[重复]

    这个问题在这里已经有答案了 在 JS 中 如果您想将用户条目拆分到数组中 最好的方法是什么 例如 entry prompt Enter your name for i 0 i
  • 用 Latex 代码替换字符串向量中的重音符号

    Define df lt data frame name c M xico Michoac n dat c 1 2 s t gt df name dat 1 M xico 1 2 Michoac n 2 当我将此表打印到 tex文件使用xt
  • 为什么我们必须在 onClick 方法中添加“View”作为参数以及它的作用是什么?

    我正在 Android Studio 中的按钮上设置事件监听器 用于更改按钮内的文本TextView到了这一点 我们定义了OnClick方法 在其参数列表中要求View目的 谁能解释一下它的作用吗 我无法理解对象在哪里View类将会习惯 它
  • AppCompatActivity 的 TextView 颜色始终为白色

    a 的文字颜色TextView在 Marshmallow 之前的设备上始终为白色 即使我在 XML 中使用黄色或黑色 除了棉花糖之外 它始终是白色的 在运行时 它将在所有设备上正常工作 以前 当我使用 Eclipse 时 一切正常 但在 A
  • 图片上传/接收API

    我想在我的网站上提供一个简单的 API 允许人们向其上传图像 并接收 URL 来访问它 但我有几个问题 如果用户必须以二进制代码发送图像会更好 还是如果用户必须以 idk ASCII 等方式发送图像会更好 常规方式是什么 我这么问是因为我可
  • 使用ajax加载以编程方式扩展jstree中的节点

    我有一棵用 jstree 制作的树 它部分加载 并在扩展节点时通过 json data 插件加载 这是代码的关键 TreeViewDiv jstree json data ajax url Website GetNodes data fun
  • 安装 SDK 后如何配置 Android 模拟器

    我正在尝试在我的 64 位 Ubuntu 12 04 发行版上启动并运行 Android 模拟器 首先 我必须安装 ia32 libs 来解决我在之前 失败的 尝试中遇到的一些早期问题 然后我下载并安装了 64 位 Linux 发行版 我导
  • Mongoose:如何防止 mongodb 在数据库中保存重复的电子邮件记录

    我想让关键电子邮件在该集合中唯一 但我无法使其正常工作 这是我的服务器代码 Create a schema var userSchema new mongoose Schema email type String required true
  • 如何制作一个 HTML/JS 所见即所得编辑器? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我尝试了许多不同的 Google 搜索 但一直无法找到有关如何实际创建所见即所得编辑器的最新教程 2006 年以后 我意识到已经有很多
  • 赋值运算符是否“需要”返回?

    根据C 标准 我可以确定内置变量的赋值运算符返回 原始值 吗 或者这个实现依赖于 但只是最流行的编译器实现了这个 是的 可以保证 5 17 赋值和复合赋值运算符 赋值运算符 和复合赋值运算符全部分组 右到左 全部都需要一个可修改的左值作为其
  • Smalltalk 中的 self 和 self 有什么区别?

    在 Smalltalk 中 方法体中经常出现两个术语 self and yourself 它们之间有什么区别 保留字self是一个伪变量 不能分配给它 它引用使用它的方法的当前接收者 另一方面yourself是一条消息 您可以发送给任何对象
  • 如何在Linux下构建Visual Studio解决方案?

    我一直使用 Windows 对 Linux 的经验非常有限 我的 Visual Studio 解决方案包含 5 个 C 项目 其中 4 个是静态库 一个是主应用程序 使用这些静态库 我想将其移动到 Ubuntu 我不使用任何特定于 Wind
  • Google Colab 中的 osmNX

    出于我的目的 我需要 Google Colab 中的 osmNX 以前有人这样做过吗 我使用以下命令 wget https repo anaconda com archive Anaconda3 2019 07 Linux x86 64 s
  • 如何导出 .xlsx 文件 C# ASP.NET MVC razor

    我想将数据导出到 xlsx文件 但我似乎只能导出到 xls 导出文件最简单的方法是什么 xlsx file 这是我用来导出到的代码 xls file GridView gv new GridView gv DataSource listCa
  • Windows Mobile 应用程序 - 通过 MMS 协议播放流?

    NOTE 这个问题被重新提出是因为我在上一个问题中不小心点击了社区维基 显然这并没有以声誉的形式提供足够的激励来让人们回答这个问题 这是旧问题的链接 请不要重复这些答案 无论如何它们并不完全有帮助 链接到原始问题 https stackov
  • 将分支合并到目录 GIT

    我有一个名为Project 然后我有一个名为payment其中包含应用程序的所有项目文件 我想合并分支payment进入我的主分支 但在文件夹 目录内 换句话说 项目分支 gt 支付申请 文件夹 gt 支付分支文件 第一次 git chec
  • C++ 中嵌套类型/类的前向声明

    我最近陷入了这样的情况 class A public typedef struct class B C D someField class C public typedef struct class D A B someField 通常你可