使用在C ++的有限范围内分配的const变量

迈克·萨德勒

我发现自己在两种最佳实践之间存在冲突,并且我想知道是否有一种方法可以兼顾两者。

我需要从选择的坐标系中获得输出,而我想做的是:

// PSEUDO-CODE

const my_class& loads_global();
const my_class& loads_local();

GetLoads(COORDINATES coordinates)
{
    switch (coordinates)
    {
    case LOCAL:
        const my_class& loads = loads_local();
        break;
    case GLOBAL:
        const my_class& loads = loads_global();
        break;
    // etc.
    }
    loads.write();
}

const引用的使用对性能有好处(此代码称为“很多”),但如果是const,则无法在范围定界符(如switch语句或if语句(或确实是try语句)中设置)我以前想做)。

我可以把loads.write(); 语句在开关内,但实际上它不仅是一行,而且我讨厌重复代码。我还可以使用指针而不是引用(“ const my_class * const my_object”范例),但这确实使代码看起来比使用引用更混乱。

有没有一种方法可以在周围的代码中使用const引用,或者将其分配给我随后不会/无法修改的const变量?

Angew不再为SO感到骄傲

如果您拥有C ++ 11,则可以使用lambda隐藏初始化:

GetLoads(COORDINATES coordinates)
{
    const my_class& loads = [&]() -> const my_class& {
      switch (coordinates)
      {
      case LOCAL:
          return loads_local();
          break;
      case GLOBAL:
          return loads_global();
          break;
      default:
          throw something;
      }
    }();  // Note the call operator here!
    loads.write();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用有限范围内的偏斜分布在R中创建样本矢量数据

来自分类Dev

在稍后的应用程序中使用在try catch块内分配了值的变量吗?

来自分类Dev

在C ++中,如何使用在另一个文件中定义的常量变量?

来自分类Dev

允许我的应用在有限的几天内免费使用

来自分类Dev

无法在命名空间范围内分配变量

来自分类Dev

C ++-'(const char *)'没有在范围内声明?

来自分类Dev

C ++-'(const char *)'没有在范围内声明?

来自分类Dev

使用在“ with”块内分配的实例成员将引发System.NullReferenceException

来自分类Dev

const引用在C ++中是否具有外部链接?

来自分类Dev

在范围内分配多个值

来自分类Dev

如何使用GenericArray具有有限的可在编译时检测到的长度范围?

来自分类Dev

JS:在闭包的父范围内分配变量会降低性能。为什么?

来自分类Dev

JS:在闭包的父范围内分配变量会降低性能。为什么?

来自分类Dev

使用ggplot在x轴上显示有限的时间范围

来自分类Dev

需要使用在for循环中使用的变量

来自分类Dev

显示c = | a-b | 有限地使用有限的操作

来自分类Dev

GNU编译器与Visual Studio在范围内分配的数组(带有长度常量)

来自分类Dev

在Objective-C中的另一种方法中使用在一种方法中定义的变量

来自分类Dev

Vim使用在字符串内插的变量?

来自分类Dev

如何使用在makefile中定义的环境变量?

来自分类Dev

使用在其他类扩展中创建的变量

来自分类Dev

如何在宏中使用在宏中找到的变量

来自分类Dev

使用在Continue块的For循环中声明的词法变量

来自分类Dev

如何使用在HTML值循环后获得的PHP变量?

来自分类Dev

动态SQL:使用在字符串之外声明的变量

来自分类Dev

如何使用在控制台的函数中创建的变量

来自分类Dev

使用在该函数之外的函数中声明的变量

来自分类Dev

java - 如何使用在循环内计算的变量的值

来自分类Dev

如何确保DirectX 11应用在具有C ++的双GPU笔记本电脑上使用离散GPU?

Related 相关文章

  1. 1

    使用有限范围内的偏斜分布在R中创建样本矢量数据

  2. 2

    在稍后的应用程序中使用在try catch块内分配了值的变量吗?

  3. 3

    在C ++中,如何使用在另一个文件中定义的常量变量?

  4. 4

    允许我的应用在有限的几天内免费使用

  5. 5

    无法在命名空间范围内分配变量

  6. 6

    C ++-'(const char *)'没有在范围内声明?

  7. 7

    C ++-'(const char *)'没有在范围内声明?

  8. 8

    使用在“ with”块内分配的实例成员将引发System.NullReferenceException

  9. 9

    const引用在C ++中是否具有外部链接?

  10. 10

    在范围内分配多个值

  11. 11

    如何使用GenericArray具有有限的可在编译时检测到的长度范围?

  12. 12

    JS:在闭包的父范围内分配变量会降低性能。为什么?

  13. 13

    JS:在闭包的父范围内分配变量会降低性能。为什么?

  14. 14

    使用ggplot在x轴上显示有限的时间范围

  15. 15

    需要使用在for循环中使用的变量

  16. 16

    显示c = | a-b | 有限地使用有限的操作

  17. 17

    GNU编译器与Visual Studio在范围内分配的数组(带有长度常量)

  18. 18

    在Objective-C中的另一种方法中使用在一种方法中定义的变量

  19. 19

    Vim使用在字符串内插的变量?

  20. 20

    如何使用在makefile中定义的环境变量?

  21. 21

    使用在其他类扩展中创建的变量

  22. 22

    如何在宏中使用在宏中找到的变量

  23. 23

    使用在Continue块的For循环中声明的词法变量

  24. 24

    如何使用在HTML值循环后获得的PHP变量?

  25. 25

    动态SQL:使用在字符串之外声明的变量

  26. 26

    如何使用在控制台的函数中创建的变量

  27. 27

    使用在该函数之外的函数中声明的变量

  28. 28

    java - 如何使用在循环内计算的变量的值

  29. 29

    如何确保DirectX 11应用在具有C ++的双GPU笔记本电脑上使用离散GPU?

热门标签

归档