C ++将类分配给另一个类读取错误

时间:2015-11-27 16:29:07

标签: c++ pointers memory

我试图从5x7矩阵返回一个子图像。我试图检索子矩阵(0,2,0,2)。我已经创建了一个函数get_Block,它应该将矩阵的值返回到temp,但只是得到:

  

Logo_Unscrambler.exe中0x003B2A96处抛出异常:0xC0000005:访问冲突读取位置0xCCCCCCCC。

它可能非常简单,但我很累,我无法看到它。这是代码:

主:

int main() {
double* A = new double[5*7];
for (int i = 0; i < 5 * 7; i++)
{
    A[i] = i;
}

Matrix Ab(5, 7, A);
Matrix temp;

temp = Ab.get_Block(0, 2, 0, 2);
for (int k = 0; k < 3; k++)
{
    for (int i = 0; i < 3; i++)
    {
        cout << " " << temp.get(k,i, 3);
    }
    cout << endl;
}
system("pause");
return 0;

}

Matrix.cpp:

    Matrix::Matrix(int sizeR, int sizeC, double *input_data)
    {
        "Matrix::Matrix(int sizeR, int sizeC, double *input_data is invoked";

_M = sizeR;
_N = sizeC;
_data = new double[_M*_N];

for (int i = 0; i < _M*_N; i++)
{
    _data[i] = input_data[i];
}
    }

    Matrix Matrix::get_Block(int start_row, int end_row, int start_coloumn, int end_coloumn)
    {
int rows = (end_row - start_row) + 1;
int columns = (end_coloumn - start_coloumn) + 1;
int ctr = 0;

double *temp_Data = new double[rows*columns];

for (int x = start_row; x < (rows + start_row); x++)
{
    for (int y = start_coloumn; y < (columns + start_coloumn); y++)
    {
        temp_Data[ctr] = get(x, y,rows);
        ctr++;
    }
}

Matrix block(rows, columns, temp_Data);
delete[] temp_Data;

return block;
    }

    double Matrix::get(int i, int j, int row_Count)
    {
return _data[(i*_N) + j];
     }

0 个答案:

没有答案