具有静态成员的静态结构

2024-01-14

今天,我发现自己创建了一个 2 个 int 的静态数组,并且由于 C++(不是 C++11)中不允许其内联初始化,因此我恢复使用 struct 类型的静态变量。

class MyWidget {
  ...
  static const struct Margin {
    const int horizontal = 1;
    const int vertical = 1;
  } margin;

};

我注意到内部变量对于 struct Margin 的所有实例仅使用一次,因此我决定也将它们设为静态。

class MyWidget {
  ...
  static const struct Margin {
    static const int horizontal = 1;
    static const int vertical = 1;
  } margin;

};

让我感到奇怪的是声明静态结构变量与声明具有静态成员的静态结构变量之间的区别。 AFAC 静态对象在内存中仅分配一次,因此无论我的成员是否是静态的,Margin 结构都将仅分配一次。

我错过了什么吗?是否存在差异或者仅仅是语法糖?


您似乎对“静态结构”有点困惑,因为在 C++ 中,不存在静态结构之类的东西(与 C# 等语言相反,在 C# 中,静态类是解决没有全局函数这一事实的解决方法)。

您正在做的就是创建该类的实例,然后使instance (margin)静态(且恒定)。所以你的结构不是静态的,你只是定义一个结构,然后创建一个static const它的实例,属于MyWidget。现在给出的两个示例之间的差异应该非常明显。

在第一个示例中,您正在创建一个名为 margin 的静态变量,属于MyWidget,这意味着您可以访问horizontal会员这样

MyWidget::margin.horizontal

Where margin是您创建的实例。

然而,如果您将结构体的成员设为静态,您将无法做到这一点。相反,您必须像这样访问它们:

MyWidget::Margin::horizontal

Where Margin is the struct。但请注意,在第二种情况下,不需要静态实例margin,因为它没有与之关联的实例字段。

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

具有静态成员的静态结构 的相关文章

  • -ffast-math 可以安全地用于典型项目吗?

    在回答我建议的问题时 ffast math 有评论指出这是危险的 我个人的感觉是 在科学计算之外 是可以的 我还假设严肃的金融应用程序使用定点而不是浮点 当然 如果你想在你的项目中使用它 最终的答案是在你的项目上测试它 看看它有多大影响 但
  • 全局变量不好

    好吧 读完这篇文章和一些示例后 我仍然不清楚全局变量的含义 那么你的类中的私有变量是全局的吗 http www c2 com cgi wiki GlobalVariablesAreBad http www c2 com cgi wiki G
  • 从服务器下载图像(cUrl,但接受建议)C++

    我试图通过从服务器 网站 下载图像来设置旋转背景图像 并尝试使用curl 来执行此操作 但是在执行此操作方面取得了0 成功 我的代码的 缩短的 版本如下 我没有收到错误 但是 如何 临时 保存该图像以将其显示为背景 是否有图像 类型变量 或
  • C++ STL 映射,std::pair 作为键

    这就是我通过地图定义的方式 std map
  • 地图类容器的专用功能

    我想要专门为矢量和地图之类的容器设计一个函数模板 对于向量 我可以像下面那样做 但我不知道如何才能有一个专门版本的函数 该函数仅用于像地图这样的容器 include
  • 以编程方式更新 Wifi 网络

    我正在尝试创建一个程序 当某个 wifi 网络在范围内时 该程序会连接到该网络 即使已经连接到另一个 wifi 也是如此 我在用着简单Wifi https github com DigiExam simplewifi 基本上效果很好 除了在
  • 在编译输出中添加程序集绑定 (app.config)

    如果我编译应用程序 则会在输出中自动添加程序集绑定 具体的程序集绑定不在app config在 Visual Studio 中但在创建的应用程序配置中 有什么办法可以检查为什么会自动添加程序集绑定吗 选项AutoGenerateBindin
  • 如何在 Windows 上的 GCC 中链接 CS50 C 库

    我是 编程新手 一直在尝试使用以下命令编译我的代码MinGW https en wikipedia org wiki MinGW GCC 但我尝试包括CS50 https en wikipedia org wiki CS50 cs50 c
  • 为什么 xcode IDE 认为 `friend` 是保留字

    我一直在开发一个个人项目 并在我创建的新类中包含以下代码 property readonly getter isFriend BOOL friend 它似乎没有任何问题 当我构建它时 它可以编译得很好 但是当我们在xcode IDE看起来像
  • .Net 支持柯里化泛型吗?

    假设我们有一个嵌套的泛型类 public class A
  • 我想找到 C# 代码中所有后面没有括号的 if 语句。通过正则表达式

    我想找到所有if声明和for后面没有大括号的语句 当你在一个文件中写入一行时if声明您大多不会将其括在大括号中 所以我想找到所有这些if and for声明 请帮忙 就像我想捕捉这个声明 if childNode Name B return
  • 现代编译器的 C++ 中“memset”功能的状态

    Context 不久前 我偶然发现了 Alexandrescu 在 2001 年发表的 DDJ 文章 http www ddj com cpp 184403799 http www ddj com cpp 184403799 它是关于比较将
  • 对象变空似乎是 Hangfire 中的反序列化问题

    Hangfire 似乎无法反序列化我的原始版本Scheduler对象及其所有状态 我正在调用其 Execute 方法BackgroundJob Enqueue 如下所示 Scheduler new FileInFileOut FileIn
  • 批量插入,asp.net

    我需要获取与会员相对应的 ID 号列表 在任何给定时间处理的数量可能在 10 到 10 000 之间 我可以毫无问题地收集数据 解析数据并将其加载到 DataTable 或任何内容 C 中 但我想在数据库中执行一些操作 将所有这些数据插入表
  • 为什么使用 .AsEnumerable() 而不是转换为 IEnumerable

    扩展方法之一IEnumerable
  • C 中的 2 个字符要短

    我有2个字符 Char 128和查尔2 如何将这些字符转为 Short640 in C 我试过了 unsigned short getShort unsigned char array int offset short returnVal
  • 在 C 中运行 setuid 程序的正确方法

    我有一个权限为4750的进程 我的Linux系统中存在两个用户 root 用户和 appz 用户 该进程继承以 appz 用户身份运行的进程管理器的权限 我有两个基本惯例 void do root void int status statu
  • asio::this_coro::executor 的实现是什么

    在协程函数中 我们可以添加auto ex co await asio this coro executor 获取该协程的执行者 但当我想了解它的定义时 我发现了这个 Awaitable type that returns the execu
  • 将“C# 友好类型”名称转换为实际类型:“int” => typeof(int)

    我想得到一个System Type给定一个string指定 原始 类型C 友好名称 基本上与 C 编译器读取 C 源代码时的方式相同 我觉得描述我所追求的最好方式是单元测试的形式 我希望存在一种通用技术 可以使以下所有断言通过 而不是尝试对
  • 为什么在一行中使用这个 C++ 函数两次会导致编译错误?

    我在尝试在 Visual C 2010 中实现智能相等测试宏类型模板函数时遇到了一些麻烦 该函数与VS 中关于模板函数默认参数的错误 https stackoverflow com questions 10343177 why do i g

随机推荐

  • TensorFlow `conv2d transpose()` 操作有什么作用?

    的文档conv2d transpose 操作没有清楚地解释它的作用 conv2d 的转置 此操作有时称为 反卷积 反卷积网络 http www matthewzeiler com pubs cvpr2010 cvpr2010 pdf 但实际
  • WinRT - 加载数据,同时保持 UI 响应

    我正在开发一个 Windows Metro 应用程序 但遇到了 UI 无响应的问题 据我所知 原因如下
  • 如何更改 Rterm.exe 上的行长度

    我在用R 2 15 2 on windows XP 我以前用过Rgui exe但它缺乏我喜欢使用的 UNIX 标准CTRL R lt gt backward research and CTRL U lt gt erase line 如果我错
  • 添加图层时,Mapbox 样式在缩放时发生变化/中断

    我有一个 mapbox 地图 使用 Outdoor v9 样式初始化 尝试了其他样式 相同的行为 当我向地图添加图层 标记或 geojson 源并缩放地图时 样式会发生变化或中断 我不确定是哪一个 This is the map befor
  • 如何将项目插入到列表框中的字母顺序位置?

    我开发了一个网页 其中显示从数据库获取的列表框项目 我动态地向其中添加了一些项目 它添加到列表框的末尾 因此我想在添加项目后对列表框项目进行排序 我试过Arraylist用于排序 但它不起作用 我正在寻找一种不需要比较器类 ArrayLis
  • PHP 地址的纬度经度

    我的网站上有一个表单 用户可以在其中输入某个地点的地址 当他们提交表单时 我将此位置转换为纬度 经度并将其存储在 MySQL 数据库中 我正在使用 Google 的地理编码服务进行此转换 问题是我找不到类或服务来将该纬度 经度转换回地址 据
  • 仅将图像作为 UITabBarItem

    我只想有一个图标作为 UITabBarItem 而不是下面的文本 我想知道这是否可能 如果可以 如何实现 TIA 删除标题 与检查员的简单方法 选择您的 TabbarItem In 职衔 职位更改为自定义偏移 将垂直设置为 100 Done
  • 如何在haskell中编写递归函数

    我如何在 Haskell 中编写一个函数 它接受一个列表和一个数字 然后删除所有大于该数字的元素并返回列表 删除 5 4 3 9 1 5 应返回 5 4 3 1 我编写了以下方法 当它达到大于给定数字时 该方法会变成无限循环 我要退出 5
  • Android 在 vi​​ewpager 中单击转到第一个片段后返回到同一片段

    我开发了一个应用程序 其中我使用片段查看寻呼机 我使用片段类将一个页面移动到另一个页面 在第二个片段类中 我有一个按钮返回 我编写编码以通过片段直接移动到第一个片段 替换 但替换第一个片段后 我不会将寻呼机页面滚动到另一个片段 这意味着当我
  • 获取未捕获的参考错误:Button1_Click 未定义

    假设我这里有一个aspx代码
  • 如何保存/重定向 Laravel 5 Artisan 命令的输出?

    我已经尝试过该方法此处描述 https stackoverflow com questions 20111287 how to save redirect output from laravel artisan command但这不适用于我
  • 在 GridLayout 中对齐按钮

    我的布局代码及其图形表示是 这只是一个例子 我有大约30个Buttons在我的应用程序中GridLayout 我想要我的Buttons填充网格中的整个单元格 并且网格的列应该具有均匀的宽度 高度 我似乎无法完成它 欢迎任何帮助 我没用过Gr
  • Flask,无法分配请求的地址[重复]

    这个问题在这里已经有答案了 我正在尝试在远程服务器上运行烧瓶应用程序 以便我可以从其他计算机访问它 服务器有一个公共 IP 我将 Flask 配置为在该 IP 上运行 但是当我运行脚本时 我得到以下回溯 注意 我已从回溯和代码中删除了公共
  • UITextField——观察 selectedTextRange 的变化?

    有什么方法可以观察 UITextField 的 selectedTextRange 的变化吗 我尝试观察所有 UIControlEvents 但更改 selectedTextRange 不会触发 UIControlEvent 另一个死胡同
  • java中如何替换空值空字符串? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我得到了null来自数据库的值 但我
  • Highchart 在 x 轴上显示字符串

    我试图将我的 x 轴值显示为系列的 highcharts 上的字符串 但得到 0 1 2 这是 xaxis 数组索引位置 如何在 higcharts 上显示格式化为字符串的 xaxis 值 这是我所拥有的 Highcharts chart
  • 最后命名的参数不是函数或数组?

    这个问题是关于 vararg 函数 以及省略号之前的最后一个命名参数 void f Type paramN va list ap va start ap paramN va end ap 我在阅读 C 标准时 发现了以下限制va start
  • Django 内联-允许添加禁用编辑

    你好 我在阅读以下问题后提出这个问题 问题 1 https stackoverflow com q 2951781 1095090 and 问题2 https stackoverflow com q 9504371 Question 1 没
  • 查看 pandas 系列的每一行中是否有项目

    我有一个包含以下数据的 pandas 系列 2015 07 24 Business Corporate 2015 07 24 Business Corporate 2015 07 08 Commentary World 2015 07 05
  • 具有静态成员的静态结构

    今天 我发现自己创建了一个 2 个 int 的静态数组 并且由于 C 不是 C 11 中不允许其内联初始化 因此我恢复使用 struct 类型的静态变量 class MyWidget static const struct Margin c