C++:编译矢量模板时出现段错误 class

C++: Segfault when compiling vector template class

我正在学习 C++,正在学习和练习创建自定义矢量模板 class,它看起来像

template<class T> class Vector
{
private:
    std::vector<T> mData; // data stored in vector
    int mSize; // size of vector
public:
// Constructor
    Vector(int size)
    {
        assert(size > 0);

        mSize = size;
        //std::vector<T> mData;
        mData.resize(mSize);
        for (int i = 0; i < mSize; i++)
        {
            //mData.push_back(0);
            mData[i] = 0;
        }
    }
// Get/set values
    T& operator[](int i)
    {
        assert(i >= 0 && i < mSize);
        return mData[i];
    }

    T const& operator[] (int i)const
    {
        assert(i >= 0 && i < mSize);
        return mData[i];
    }
...
}

我正在尝试通过执行以下操作来重载一元 - 运算符:

public:
    Vector operator-() const
    {
        Vector v(mSize);
        for (int i = 0; i < mSize; i++)
        {
            v[i] = 0 - mData[i];
        }
        return v;
    }

但这会在编译时产生段错误(没有进一步解释)。我在模板中有多个其他类似的功能似乎有效。在矩阵 class 的另一个模板中,我还有:

public:
    Matrix operator-() const // unary -
    {
        Matrix mat(mNumRows, mNumCols);
        for (int i = 0; i < mNumRows; i++)
        {
            for (int j = 0; j < mNumCols; j++)
            {
                mat(i,j) = -mData[i*mNumCols + j];
            }
        }
        return mat;
    }

这不会产生任何错误。我对内存问题还不是很熟悉。整个语法是否错误,我只是幸运矩阵函数没有产生错误?

错误不是在编译期间而是 运行