C++ 类中指针数组怎么初始化

我在.h文件中定义了类 class A{
private:
const char *HEADER_MSG[MSG_TYPE_NUM];
}
在 cpp文件中 const char A::*HEADER_MSG[3] = {"AI", "VI", "OI"};
这样不对么?
1,为什么?
2, 该怎么改呢?

第1个回答  2013-05-02
如果是静态数据直接在全局改。
如果是像你这样的独有的数据成员要在构造函数进行初始化。追问

不好意思 没看太明白 类的成员变量不能定义指针数组么?还是..
如果可以, 那该怎么初始化呢?

追答

具体的原因记不清了。记得是私有数据成员的初始化必须在构造函数里
即class A
{
public:
A{...}
private:
...
}
你看看初始化可不可以用赋值的方式写在public 里面,那个与类 同名 的函数里。

第2个回答  2013-05-02
把private改为public,先定义一个对象,再赋值:
A obja;
HEADER_MSG[0] = "AI";
HEADER_MSG[1] = "VI";
HEADER_MSG[2] = "OI";本回答被提问者和网友采纳
第3个回答  2013-05-02
类的数据成员的初始化必须放在构造函数中进行,不能像普通C++程序那样定义时直接初始化。追问

应该怎么初始化呢?

第4个回答  2013-05-02
在构造函数中初始化:
A::A()
{
HEADER_MSG[0] = "AI";
HEADER_MSG[1] = "VI";
HEADER_MSG[2] = "OI"
}
相似回答