在类中怎么给字符数组成员初始化呢

在类中如何给字符数组成员初始化呢
在类中如何给数组成员初始化呢
C/C++ code

#include<iostream>
using namespace std;
class A
{
public:
    A():a("hello"){}

private:
    char a[20];
};




这样为什么不行呢

------解决方案--------------------
C/C++ code

A(){strcpy(a,"Hello");}

------解决方案--------------------
a是数组名,代码数组首地址,是常量,不能被赋值和修改,可以修改的是它所指向的内存
------解决方案--------------------
这个错误就好比:
char a[20]
a = "hello";
自己看可以吗?

初始化可以在构造函数里写啊,构造函数就是用来给你了初始化的。
------解决方案--------------------
C/C++ code

cat main.cpp
#include <cstdio>
#include <iostream>
#include <cstdlib>
using namespace std;

class A
{
public:
    A():a({0x30, 0x32, 0x33}){}

//private:
public:
    char a[20];
};

int main()
{
    A t;
    cout << t.a[1] << endl;
    return 0;
}

------解决方案--------------------
一楼是对的,换个新点的编译器就可以照六楼那样了。
参http://blog.****.net/zzulp/article/details/6580891
第3条。
------解决方案--------------------
6楼的方法在VS2008的编译器下是不行的,没法通过编译的,在VS2010的编译器下是否能通过没试过。给类中的数组成员初始化可以在构造函数的函数体中进行初始化:

A():a("hello"){}
这样给a初始化相当于让a指向了常量数据区,而数组a是个常量指针,也就相当于a是一个char *const a;a是不能改变它的指向的,但可以改变a所指向的内容.

C/C++ code

#include<iostream>
using namespace std;
class A
{
public:
    A()
    {strcpy(a,"hello");}

private:
    char a[20];
};

------解决方案--------------------
strcpy(char *,const char *)好东西