在类定义内定义静态数组有关问题
在类定义内定义静态数组问题
VC2003,在类定义时,由于此时并没有此类的实例,因此在类定义内不能对成员变量赋值,如
class Cxxx
{
public:
int a; // 不能为int a = 1;
}
若想此时赋值,须加为静态变量,即
static int a = 1;
但是如果要在类定义时声明一个数组,我用如下语句
static int a[2] = {1, 2};
则编译不能通过。
请教各位原因和解决方案。特别的,我这个a[2]需要为const,所以不能采取这里声明,后面再赋值的办法。
------解决方案--------------------
static int a[2];
到cpp文件里写
int Cxxx::a[2] = {1, 2};
------解决方案--------------------
class Cxxx
{
public:
static int a[2]; // 不能为int a = 1;
};
int Cxxx::a[2]={1,2};
------解决方案--------------------
类定义的写法
只是指出了初始化的值,未实际分配内存
需类定义的外部给出定义
------解决方案--------------------
类中给static成员赋值,实际上只是指定了一个值,并没有分配实际的空间。
必须到.cpp中的一开始给静态数据成员初始化——根据你的需要。
VC2003,在类定义时,由于此时并没有此类的实例,因此在类定义内不能对成员变量赋值,如
class Cxxx
{
public:
int a; // 不能为int a = 1;
}
若想此时赋值,须加为静态变量,即
static int a = 1;
但是如果要在类定义时声明一个数组,我用如下语句
static int a[2] = {1, 2};
则编译不能通过。
请教各位原因和解决方案。特别的,我这个a[2]需要为const,所以不能采取这里声明,后面再赋值的办法。
------解决方案--------------------
static int a[2];
到cpp文件里写
int Cxxx::a[2] = {1, 2};
------解决方案--------------------
class Cxxx
{
public:
static int a[2]; // 不能为int a = 1;
};
int Cxxx::a[2]={1,2};
------解决方案--------------------
类定义的写法
只是指出了初始化的值,未实际分配内存
需类定义的外部给出定义
------解决方案--------------------
类中给static成员赋值,实际上只是指定了一个值,并没有分配实际的空间。
必须到.cpp中的一开始给静态数据成员初始化——根据你的需要。