类static操作的相关问题


#include<vector>
class Dp
{
    private:
        const static int N_ROW_MAX=1000;
    public:
        static std::vector<int> weight[N_ROW_MAX+1];
    private:
        static void Set();  //初始化静态成员数据 
};
int main()
{
    return 0;
}
void Dp::Set()
{
    weight[1].resize(1);
}

这个代码最后一行报错,如图:

img

但是只要把最后一行的resize去掉,就不会报错了,即:


#include<vector>
class Dp
{
    private:
        const static int N_ROW_MAX=1000;
    public:
        static std::vector<int> weight[N_ROW_MAX+1];
    private:
        static void Set();  //初始化静态成员数据 
};
int main()
{
    return 0;
}
void Dp::Set()
{
    weight[1];
}

这样就不会报错。
这是为什么?

静态数组的长度是预先定义好的,在整个程序中,一旦给定大小后就无法改变。

你这个weight[1];是什么?