类型别名和自引用

2023-12-21

例如,单链表节点可能定义如下

namespace example_part1
{
    class node
    {
        node * next;
        int value;
    }
}

假设我们只有一个整数列表。此类允许有一个指向其自身类型的成员,因为无论底层数据结构的大小如何,指针都具有相同的大小。

现在,为什么我不被允许这样做

namespace example_part2
{
    using node = std::pair<example_part2::node *, int>;
}

?

我知道这看起来是一个愚蠢的例子,但我想更多地了解它无法编译的原因。我实际上遇到了与此类似的情况,它可能有用(不适用于 std::pair)。另外,假设这两个代码段来自不同的程序,即我没有节点自定义类以及同一程序中别名为节点的对。


请注意,在类型别名 http://en.cppreference.com/w/cpp/language/type_alias

[type-id 是]抽象声明符或任何其他有效的 type-id(可能会引入 新类型,如 type-id 中所述)。 type-id 不能直接或 间接引用标识符。

本质上,别名可能不是递归的。

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

类型别名和自引用 的相关文章

  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • C# 和 Javascript SHA256 哈希的代码示例

    我有一个在服务器端运行的 C 算法 它对 Base64 编码的字符串进行哈希处理 byte salt Convert FromBase64String serverSalt Step 1 SHA256Managed sha256 new S
  • UML类图:抽象方法和属性是这样写的吗?

    当我第一次为一个小型 C 项目创建 uml 类图时 我在属性方面遇到了一些麻烦 最后我只是将属性添加为变量 lt
  • C++ 子字符串返回错误结果

    我有这个字符串 std string date 20121020 我正在做 std cout lt lt Date lt lt date lt lt n std cout lt lt Year lt lt date substr 0 4 l
  • Newtonsoft JSON PreserveReferences处理自定义等于用法

    我目前在使用 Newtonsoft Json 时遇到一些问题 我想要的很简单 将要序列化的对象与所有属性和子属性进行比较以确保相等 我现在尝试创建自己的 EqualityComparer 但它仅与父对象的属性进行比较 另外 我尝试编写自己的
  • 指针问题(仅在发布版本中)

    不确定如何描述这一点 但我在这里 由于某种原因 当尝试创建我的游戏的发布版本进行测试时 它的敌人创建方面不起作用 Enemies e level1 3 e level1 0 Enemies sdlLib 500 2 3 128 250 32
  • C#:如何防止主窗体过早显示

    在我的 main 方法中 我像往常一样启动主窗体 Application EnableVisualStyles Application SetCompatibleTextRenderingDefault false Application
  • C 预处理器库

    我的任务是开发源分析工具C程序 并且我需要在分析本身之前预处理代码 我想知道什么是最好的图书馆 我需要一些重量轻 便于携带的东西 与其推出自己的 为什么不使用cpp这是的一部分gcc suite http gcc gnu org onlin
  • Qt moc 在头文件中实现?

    是否可以告诉 Qt MOC 我想声明该类并在单个文件中实现它 而不是将它们拆分为 h 和 cpp 文件 如果要在 cpp 文件中声明并实现 QObject 子类 则必须手动包含 moc 文件 例如 文件main cpp struct Sub
  • Web API - 访问 DbContext 类中的 HttpContext

    在我的 C Web API 应用程序中 我添加了CreatedDate and CreatedBy所有表中的列 现在 每当在任何表中添加新记录时 我想填充这些列 为此目的我已经覆盖SaveChanges and SaveChangesAsy
  • 指针减法混乱

    当我们从另一个指针中减去一个指针时 差值不等于它们相距多少字节 而是等于它们相距多少个整数 如果指向整数 为什么这样 这个想法是你指向内存块 06 07 08 09 10 11 mem 18 24 17 53 7 14 data 如果你有i
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • clang 实例化后静态成员初始化

    这样的代码可以用 GCC 编译 但 clang 3 5 失败 include
  • 实体框架 4 DB 优先依赖注入?

    我更喜欢创建自己的数据库 设置索引 唯一约束等 使用 edmx 实体框架设计器 从数据库生成域模型是轻而易举的事 现在我有兴趣使用依赖注入来设置一些存储库 我查看了 StackOverflow 上的一些文章和帖子 似乎重点关注代码优先方法
  • 为什么我收到“找不到编译动态表达式所需的一种或多种类型。”?

    我有一个已更新的项目 NET 3 5 MVC v2 到 NET 4 0 MVC v3 当我尝试使用或设置时编译出现错误 ViewBag Title财产 找不到编译动态表达式所需的一种或多种类型 您是否缺少对 Microsoft CSharp
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • 如何在 C++ BOOST 中像图形一样加载 TIFF 图像

    我想要加载一个 tiff 图像 带有带有浮点值的像素的 GEOTIFF 例如 boost C 中的图形 我是 C 的新手 我的目标是使用从源 A 到目标 B 的双向 Dijkstra 来获得更高的性能 Boost GIL load tiif
  • 限制C#中的并行线程数

    我正在编写一个 C 程序来生成并通过 FTP 上传 50 万个文件 我想并行处理4个文件 因为机器有4个核心 文件生成需要更长的时间 是否可以将以下 Powershell 示例转换为 C 或者是否有更好的框架 例如 C 中的 Actor 框
  • 防止索引超出范围错误

    我想编写对某些条件的检查 而不必使用 try catch 并且我想避免出现 Index Out of Range 错误的可能性 if array Element 0 Object Length gt 0 array Element 1 Ob
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我

随机推荐

  • Delphi 2009:Vista下如何在Windows服务和桌面应用程序之间进行通信?

    Vista Windows2008 Windows7下桌面应用程序如何与Windows服务通信 应用程序需要向服务发送小字符串并接收返回的字符串响应 两者都是用Delphi 2009编写的 请同时提供示例代码 要走的路是命名管道 http
  • 如何使用 CSS 为背景图像着色?

    我有一个通过 CSS 设置的背景图像 html background image url img cello jpg background attachment fixed background size 100 我计划为网站的不同页面使用
  • 如何通过允许预发布来指定 Python 要求?

    我对声明 Python 包需求的正确方法有些困惑 未正式发布的新版本确实有预发布名称 例如0 2 3 dev20160513165655 当我们添加时 pip 非常聪明地安装预发行版 pre选项 当我们构建开发分支时 我们确实使用它 主分支
  • 关于机器学习的 train_test_split 的想法

    我只是注意到很多人甚至在处理丢失的数据之前就倾向于使用train test split 并且似乎他们一开始就分割了数据 还有很多人 他们倾向于在完成所有数据清理 特征工程 特征选择之后 在模型构建步骤之前分割数据 人们一开始倾向于将数据进行
  • 反应 this.props 未定义或空对象

    构建一个小型反应应用程序 将地理位置 由浏览器确定为子组件作为道具 传递 第一个组件 App jsx import React Component from react import DateTime from components dat
  • 从 Struts1 迁移到 Struts2 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我的应用程序位于 Struts1 中 并且我在所有操作中都使用了 Dispatch 操作 现在请告诉我如何转换到 struts 2 以
  • Visual Studio 2012 Express 在格式文档命令上挂起并显示消息“等待后台操作完成”[重复]

    这个问题在这里已经有答案了 这件事是几天前才开始的 每次我使用 Ctrl K D 格式化文档时 VS 都会挂起并显示该消息 似乎由于某种原因 运行格式命令花费了相当长的时间 20 秒左右 有时在较大的文档上需要更长的时间 没有安装任何新的加
  • Rails 错误 - 无法加载此类文件 -- aws-sdk (您可能需要安装 aws-sdk gem)

    我有一个 RoR 应用程序 可以通过回形针和亚马逊 s3 上传图像 一切都工作正常 直到我决定将路由从 myapp com id 更改为 myapp com model name 现在我收到以下错误 LoadError cannot loa
  • 无法绑定多部分标识符[重复]

    这个问题在这里已经有答案了 可能的重复 无法绑定多部分标识符 https stackoverflow com questions 2531924 the multi part identifier could not be bound 这是
  • 在android应用程序中连接oracle

    我正在做多媒体应用 我的问题是我想通过 JDBC 将 Oracle 数据库连接到我的应用程序 每当我尝试连接 jdbc 驱动程序时 它都会显示 Dxwarning 忽略匿名内部类的 InnerClasses 属性 oracle jdbc p
  • 什么可以防止任何恶意软件在 ARM TrustZone 中引发 SMC 异常?

    我正在阅读有关 ARM TrustZone 的内容 我读到 当普通世界想要来自安全世界的功能时 他们会引发 SMC 异常 从而将数据传输到安全世界 我不明白的是 是什么阻止了任何恶意代码引发 SMC 异常 如果任何未经授权的软件都可以导致转
  • 如何让 SwiftUI 列表自动滚动?

    当向 ListView 添加内容时 我希望它自动向下滚动 我正在使用 SwiftUIList and a BindableObject作为控制器 新数据正在添加到列表中 List chatController messages id sel
  • 是否可以同时在多个画布上绘图?

    我所有的画布绘制函数都是这样开始的 function drawMe var canvas document getElementById canvas id var ctx null ctx canvas getContext 2d 但是我
  • WScript.Shell 在 FireFox 中不起作用

    我有以下 JavaScript 代码 实际上我必须在客户端启动一个exe function executeCommands var commandtoRun C WINDOWS notepad exe var oShell new Acti
  • 按自定义排序顺序对 jQuery 中的 Div 进行排序

    我正在尝试重新排序标签的子元素input通过比较 它们的类别属性对应于 Javascript 中的类别顺序 多变的category sort order 然后我需要删除其类别属性的div 没有出现在category sort order 预
  • 如何动态合并android表格布局中一个单元格中的行?

    如何通过表格布局在 android 中获得以下功能 如图所示 我需要将两个单元格合并第 5 行 第 1 列 and 行 6 列 1动态地 我必须替换那里的一张图像 我怎样才能实现这个目标 感谢您的回答 使用 GridLayout 而不是 T
  • 当用户切换电视源时在应用程序上管理 GCKDevices

    ios的Google Chromecast api有以下设备发现方法 void deviceDidComeOnline GCKDevice device manipulate UI self tableView reloadData voi
  • 从 Jenkins 管道中的 shell 步骤访问 Groovy 变量

    使用Jenkins 2 x 中的管道插件 https jenkins io doc book pipeline overview 我如何访问在阶段或节点级别的某个位置定义的 Groovy 变量 sh step 简单的例子 node stag
  • Angular JS ng-include 绑定问题

    我使用模板文件创建了一个寻呼机小部件 我在 HTML 页面中使用了两次 我有一个选择 转到页面 选项以及上一页和下一页的链接 问题是 当我使用选择框更新当前页面 然后使用上一页和下一页链接时 当前页面会更新 但选择框不会更新 请告诉我我做错
  • 类型别名和自引用

    例如 单链表节点可能定义如下 namespace example part1 class node node next int value 假设我们只有一个整数列表 此类允许有一个指向其自身类型的成员 因为无论底层数据结构的大小如何 指针都