C++指针数组与类静态成员的初始化问题~~

public:
static int A[4][4];
static int *p[4];
}
能不能在类外这样初始化?

int *CKeyboardApp::p[4]={CKeyboardApp::A[0],CKeyboardApp::A[1],CKeyboardApp::A[2],CKeyboardApp::A[3]};
写了个Test,看吧

int CKeyboardApp::A[4][4];

这个静态成员你还没定义呢,加上这个编译通过

还有,静态成员要在全局的地方定义,不能在main函数里定义追问

我定义了啊,静态成员不是独立分配内存吗?
在类里定义的时候就分配了内存了~~
另外,我是在类里定义的静态成员;

追答

类里的那叫声明, 类里的静态成员必须在类外定义才能使用

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-16
建议初值都赋值为0或NULL
第2个回答  2012-12-16
A[4][4]完成初始化以后,可以这样利用A对P进行初始化,不过他们最终应该是指向同一块空间的。
第3个回答  2012-12-16
可以。追问

但是报错了~~

追答

注意,类的static成员变量定义不能放在任何函数之内。就是上面的语句不能放在任何函数之内。还有,把
int CKeyboardApp::A[4][4] = {0};

放在前面。

第4个回答  2012-12-16
东方神稻
相似回答