2

我有一个关于 C++ 中良好设计的问题。我有一个class A, 并且这个类的所有对象都使用一个常量值的整数数组(它们应该共享同一个数组,因为它们的值是常量)。该数组需要在任何对象 A 之前计算(仅一次)。

我想过有另一个class B包含整数数组作为静态成员的init()方法,一个根据一些公式填充这个数组的方法和一个静态布尔标志initialized(如果这个变量为真,那么该init()方法将什么都不做),但我不是确定这是解决我的设计问题的最佳方法。

所以我的问题是,什么是实现这一目标的好设计/方法?

提前致谢。

4

1 回答 1

2

由于数组是常量,因此使用const.

由于该数组在类的所有实例之间共享,因此使用static.

在你的头文件中,声明它:

class A
{
    static const int the_array[10];
}

在 A 的源文件中,初始化一个实例

const int A::the_array[10] = { ... };

从评论编辑...

或者,如果通过算法更好地生成数组,请使用常量指针。数组的使用语法是相同的。

请注意,数组和指针都是const.

标题:

class A
{
    static const int * const the_array;
}

源文件:

namespace
{
  const int * generate_my_array()
  {
    // Allocate an array, initialize it, return it.
  }
}

const int * const A::the_array = generate_my_array();
于 2012-09-09T03:37:18.307 回答