Hallo,
Die IDE ist Microsoft Visual C++ 2010 Express.
Ich habe eine Klasse, welche über ein 2 dimensionales array verfügt:
double matrix_ [COLOM] [ROW];
Wenn ich versuche das array zu löschen bekomme ich jedoch immer wieder Laufzeitfehler. COLOM und ROW sind immer 2 btw.
Versuch 1:
    delete (double *)  matrix_[0];
    delete (double *)  matrix_[1];
    delete    matrix_;
Versuch 2:
    delete []  matrix_[0]; // Wirft compiler Warning warning C4154: Löschen eines Arrayausdrucks; Konvertierung in Zeiger
                                    //  warning C4156: Löschen eines Arrayausdrucks ohne Verwendung der Arrayform von 'delete'. Arrayform wird automatisch verwendet.
    delete []  matrix_[1];
    delete    matrix_;
Versuch 3:
    delete (double *) [] matrix_[0]; 
    delete (double *) [] matrix_[1];
    delete    matrix_;
So einen Runtimefehler bekomme ich:
Ich habe auch die Zeile "delete matrix_;" weggelassen und die verschiedenen Methoden probiert. Versuch 2 sollte laut diversen Foren eignelich funktionieren.
Anbei die Klasse:
#include <iostream>
#define    COLOM    2
#define    ROW        2
using namespace std;
class Matrix
{
public:
    Matrix( double (*matrix)[ROW]);
    Matrix (const Matrix& m);
    ~Matrix ();
    double    det(void);
    bool    isSingular(void);
    void print(void);
private:
    double matrix_ [COLOM] [ROW];
    int    matrixSize_;
};
Matrix::~Matrix()  
{     
    cout << "\nDestructor: " << matrix_ << "\n"; 
    //delete [] matrix_;
    delete [](double *) matrix_[0];
    delete [](double *) matrix_[1];
    //delete    matrix_;
    //delete [] matrix_;
};
Matrix::Matrix( double  (*matrix)[ROW]  =0) : matrixSize_(sizeof(double) * COLOM * ROW)
{
    double    tmpMatrix [COLOM][ROW] = {{0,0}, {0,0}};
    if (matrix == 0)
    {
        memcpy(matrix_, tmpMatrix, matrixSize_);
    }
    else
    {
        memcpy(matrix_, matrix, matrixSize_);
    }
}
Matrix::Matrix(const Matrix& m) : matrixSize_(m.matrixSize_)
{
    memcpy (matrix_, m.matrix_, matrixSize_);
}
bool Matrix::isSingular(void)
{
    return (det() == 0);
}
double Matrix::det(void)
{
    return (matrix_[0][0]*matrix_[1][1] - matrix_[1][0]*matrix_[0][1]);
    //DET = ad-bc
}
void Matrix::print(void)
{
    for (int i=0; i < ROW; i++)
    {
        cout << "Row " << i << " : ";
        for (int j=0; j < COLOM; j++)
        {
            cout << matrix_[j][i] << " ";
        }
        cout << "\n";
    }
}Vielen Dank für jede Hilfe im Vorhinein.
 
		 
		
		
	