C++类数组成员初始化问题

2024-11-28 12:49:10
推荐回答(4个)
回答1:

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 }; ,这个就过不了了。一个意思。

在声明的时候可以这样写,是初始化。在声明之后编译器会认为你是在给数组赋值。但数组是没有赋值操作的。所以会有编译错误。

回答2:

数组初始化是指在定义数组时为数组元素提供值。所以:
CRect m_rect[4] = {CRect(),CRect(),CRect(),CRect()}; ——是对的

Crect m_rect[4];
m_rect = {CRect(),CRect(),CRect(),CRect()};
——是错误的。

回答3:

m_rect = {CRect(),CRect(),CRect(),CRect()};

数组名怎么能=后面那么多。。。
不是迫不得已不要用全局变量,即使用也别写在头文件中。写在源文件中,在使用的地方声明extern 即可。

回答4:

看错了。。。 把完整程序贴上来吧