C ++函数返回一个对象数组

时间:2014-03-22 01:36:16

标签: c++ arrays matrix lapack

当我尝试创建一个函数来返回一个对象数组时,我有一个非常(看似)奇怪的问题:

所以我创建了一个Matrix类来与现有的LAPACK例程接口(即显式存储我的矩阵列major,并具有解释存储值的函数)。我想创建一个函数来获取其中一个对象并确定矩阵的特征系统(通过DGEEV)。我试图创建一个返回poiter(Matrix *)

的函数
Matrix * eigsys(const Matrix& m1) {
    <Memory allocation stuff that's irrelevant to the point>
    Matrix * eigs = new Matrix[4];
    Matrix WR(N,1), WI(N,1), VL(N,N), VR(N,N);
    <Do DGEEV, successful exit...>
    eigs[0] = WR;
    eigs[1] = WI;
    eigs[2] = VL;
    eigs[3] = VR;
}

如果它很重要,我的平等超载是

54 Matrix &Matrix::operator=(const Matrix& rhs) {
55         if(this == &rhs) {
56                 return *this;
57         } else {
58                 if(n != rhs.n || m != rhs.m) {
59                         this->~Matrix();
60                         n = rhs.n;
61                         m = rhs.m;
62                         alloc();
63                 }
64                 for(int i = 0; i < n*m; i++) {
65                         mat[i] = rhs.mat[i];
66                 }
67                 return *this;
68         }
69 }

所有alloc()都为Matrix

分配了1D数组

奇怪的是,我可以毫无问题地访问偶数索引,但奇数会产生分段错误。有什么想法吗?

0 个答案:

没有答案