(C++)自定义类如何在构造函数里初始化它的静态成员?

来源:百度知道 编辑:UC知道 时间:2024/06/28 10:08:48
struct a
{
public:
a():ass(22){}//error C2438: 'ass' : cannot initialize static class data via constructor
static size_t o()
{
return ass;
}
private:
static size_t ass;
protected:
static size_t as;
};
我晕~~~那在类里面作为成员又不能立即进行初始化,只能在类体外部定义并进行初始化?

静态成员属于类作用域,但不属于类对象,程序一运行就初始化了,不可能再在构造对象的时候再初始化了吧
你用赋值语句赋值就好

静态成员其实和全局变量地位是一样的,只不过编译器把它的使用限制在类作用域内(不是类对象,它不属于类对象成员)
要在类的定义外(不是类作用域外)初始化,如在cpp文件中
size_t a::ass = 0;//a::表示a类作用域,所以还是在类作用域内初始化的
//另外static不需要重复写

没办法的,我前天才刚问的