c++ - 通过对数组元素的引用替换变量

标签 c++ arrays reference

我有一个可以正常工作并使用整数作为标志变量(按位运算)的类:

class foo{
   uint32_t flags;
   ...
};

我想将此标志扩展到更大的大小,例如 512。但我想让旧代码的工作与新大小无关。

我试过了,但没有用:

class foo{
   uint32_t flags_ext[16];
   uint32_t& flags = flags_ext[0];
   ...
};

在做赋值等时给我一堆问题。另外警告我可能会双重删除内存。

有什么方法可以使代码正常运行但 uint32_t 是数组的一部分?

最佳答案

实现正确的默认值、复制构造函数和赋值运算符,你应该可以开始了:

class foo{
   uint32_t flags_ext[16];
   uint32_t& flags;

   foo():
       flags( flags_ext[0] )
   {}

   // copy c'tor takes care _not_ to copy the reference member
   foo( const foo& other ):
       flags( flags_ext[0] )
   { ::memcpy(flags_ext, other.flags_ext, sizeof(flags_ext)); }

   const foo& operator=(const foo& other) {
      if( this==&other )
          return *this;
      // do _not_ copy the 'flags' member!
      ::memcpy(flags_ext, other.flags_ext, sizeof(flags_ext));
      return *this;
   }
};

关于c++ - 通过对数组元素的引用替换变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29080135/

相关文章:

c++ - 未定义对 Qt 中静态声明变量的引用?

c++ - 是否有一个标准函数可以打印/监视标准输入文件的内容,同时将数据留在标准输入中?

c# - 数组影响其他数组值C#

c++ - 带有 if 语句的指针(地址)

c++ - 数组排序,从高到低

C++ 内存分配器架构

c - 从文本文件读取到字符串数组

php - 如何从数组中递归减去?

c++ - 未定义的函数引用 (c++)

java - 如何在发生更改时将扩展 AbstractTableModel 的类保存到文件中?