注册 登录
编程论坛 C++教室

类中的常数组成员怎么进行初始化

有容就大 发布于 2012-05-28 17:27, 4328 次点击
在一个类中定义了一个私有的常数组 也就是说这个数组里面的东西 不能被改变
而且 要在构造这个类的时候就把这个数组给赋值了 怎么处理
我试了几种方法 都失败了 求教各位大牛。
程序代码:
const int b[3] = {1, 2, 3};
class A
{
public:
    A();
private:
    const int a[3];
};

A::A(int b[3])
{
  for (int i = 0; i < 3; i++)
      a[i] = b[i];
}

---这样不行
程序代码:

class A
{
public:
    A();
private:
    const int a[3] = {1, 2, 3};
};
直接赋值也不行。


2 回复
#2
yuccn2012-05-28 22:01
把const去掉

在类中 就不用const数组了吧。除非你把它弄成静态的。否则,怎么初始化?没有看到有人实现过

如果你不想外面访问你的数据,直接不提供接口就达到啦。

要不你可以这样
class A
 {
 public:
     A(int b[3]);
 private:
     const int a0;
     const int a1;
     const int a2;
 };

A::A(int b[3]):a0(b[0]),a1(b[1]),a2(b[2])
{
}


#3
有容就大2012-05-29 11:36
回复 2楼 yuccn
谢谢 貌似我编译器不支持 对CONST数组的直接赋值

你给的也是一种方法 我去试了下 还可以把const int a[3] 换成 const vector <int> a;来初始化 要么就 把const 前面加static 来处理。
1