我对C ++中的优秀设计有疑问。我有一个class A
,这个类的所有对象都使用整数数组的常量值(它们应该共享相同的数组,因为它们的值是常量)。需要在任何对象A之前计算数组(仅一次)。
我考虑过让另一个class B
包含整数数组作为静态成员,init()
方法将根据某个公式和静态布尔标志initialized
填充此数组(如果此变量为true,则init()
方法将不执行任何操作),但我不确定这是解决我的设计问题的最佳方法。
所以我的问题是,什么是一个好的设计/方法来实现这个目标?
提前致谢。
答案 0 :(得分: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();