类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];
}

则不会报错。
这是为什么呢?