m_rect = {CRect(),CRect(),CRect(),CRect()}; 这句是在给数组赋值。
CRect m_rect[4] = {CRect(),CRect(),CRect(),CRect()}; 这句是在给数组初始化。
简单点儿,比如你定义一个 int a[4] = { 0, 1, 2, 3 }; 这个是没有问题的,但在声明之后你再写 a = { 0, 1, 2, 3 }; ,这个就过不了了。一个意思。
在声明的时候可以这样写,是初始化。在声明之后编译器会认为你是在给数组赋值。但数组是没有赋值操作的。所以会有编译错误。
数组初始化是指在定义数组时为数组元素提供值。所以:
CRect m_rect[4] = {CRect(),CRect(),CRect(),CRect()}; ——是对的
而
Crect m_rect[4];
m_rect = {CRect(),CRect(),CRect(),CRect()};
——是错误的。
m_rect = {CRect(),CRect(),CRect(),CRect()};
数组名怎么能=后面那么多。。。
不是迫不得已不要用全局变量,即使用也别写在头文件中。写在源文件中,在使用的地方声明extern 即可。
看错了。。。 把完整程序贴上来吧