结构/类中如何定义字符串常量

结构/类中怎么定义字符串常量?
比如想这样:
struct fileHeader
{
    const char fileDescription[20];
    const int fileFlag;
    int timeInterval;
    int amplitude;
    int spaceFactor;
    unsigned pointsCount;
//    fileHeader();
};


两个const变量不是static,那么如何初始化fileDescription?编译器提示要在构造函数的初始化列表,
我加了一个构造函数
fileHeader::fileHeader():fileDescription("DataGraph data file")
{
}
提示无法从char *类型转换到char[20]。
如何可以这样定义结构/类,这种情况下fileHeader header,sizeof(fileHeader)和sizeof(header)分别为多少?
如果memset(&header,0,sizeof(header)),可以把fileDescription和fileFlag置0吗?
问题有点多,谢谢。


------解决思路----------------------
1. 我的可以这样用
2. 没有const多大, 就多大
3. 可以, 不然memset拿来干啥, const只是君子协议, 毕竟可以强制转换, 不要被C++对const的改造吓着了.
4. 你这个是文件吧, 文件建议用(u)intXX_t, 而不用int 之类的, 而且不能对齐, 使用
#pragma pack(push)
#pragma pack(1)
struct fileHeader {
    const char fileDescription[20];
    const int fileFlag;
    int timeInterval;
    int amplitude;
    int spaceFactor;
    unsigned pointsCount;
    fileHeader();
};
#pragma pack(pop)

------解决思路----------------------
对了, 反正c++11有constexpr了, 建议编译期常量用constexpr修饰, 允许期常量用const修饰(C风格)
------解决思路----------------------
引用:
Quote: 引用:

构造函数的初始化列表可以初始化常量的

我用C++ Builder 6.0这样却不行

好老的,估计对C++标准支持的不好,建议换了
------解决思路----------------------
试试这样写,先显式转成指向数组的指针类型,再解引用成数组

fileHeader::fileHeader():fileDescription(*(char (*)[20])"DataGraph data file")
{
}

------解决思路----------------------
先回答第二个问题,不建议用memset(&header,0,sizeof(header))这样的语法,因为在C++下,类会在其中添加一些变量,比如存在虚函数等情况,这时用memset会破坏类中结构,所以建议使用构造函数来初始化
------解决思路----------------------
我的可以(vs2015), lz可以试试,
fileHeader::fileHeader():fileDescription(), fileFlag(0) {
    strcpy(const_cast<char*>(fileDescription), "DataGraph data file");
 }

不知道可不可以, 反正我的可以.
实在不行就去掉const吧, 用private 顶一下.
------解决思路----------------------
这个只有C++11(0x 没正式成为标准) 以后,可以做到
此前做不到
唯一的办法是 强制转换并复制。
C++11 可以用 初始化表,初始化数组,结构
并且可以直接定义的时候初始化
也可以在,构造函数的初始化表中,初始化