私は派生クラスのコピーコンストラクタに私の問題を絞り込んだが、原因は不明です。 編集: M、N、およびデータはプライベートです。私が受け取るエラーは、 '無効な割り当てサイズ:4294967295バイト'です - 私が理解するのは、-1を新しいものに渡すときです。私はクラスがcomunicateときにデータが失われない限り、なぜこれが起こるのか分からない。無効な割り当てサイズ(派生クラスのコピーコンストラクタで)
BinaryMatrix::BinaryMatrix(const BinaryMatrix& copy) : Matrix(copy)
{
//cout << "Copy Constructor\n";
M = copy.M;
N = copy.N;
data = new double[M*N]; //This line causes the allocation error
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
data[i*N+j] = copy.data[i*N+j];
}
}
}
上記は私の派生したコピーコンストラクタで、エラーが発生します。私は割り当て行に印を付けました。
MとNが正しく読み込まれていないと仮定できます。なぜ私は確信していません。派生コンストラクタとベースコンストラクタの両方と、基本コピーも含めます。
ありがとうございます。
MATRIX(BASE)コンストラクタ
Matrix::Matrix(int M, int N, double* input_data)
{
this->M = M;
this->N = N;
//cout << "Matrix Constructor\n";
data = new double[M*N];
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
data[i*N+j] = input_data[i*N+j];
}
}
delete [] input_data;
}
MATRIX(BASE)COPY CONSTRUCTOR
Matrix::Matrix(const Matrix& copy)
{
//cout << "Copy Constructor\n";
M = copy.M;
N = copy.N;
data = new double[M*N];
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
data[i*N+j] = copy.data[i*N+j];
}
}
}
BINARYMATRIX(派生)コンストラクタ
BinaryMatrix::BinaryMatrix(int M, int N, double* input_data) : Matrix(M, N, input_data)
{
data = new double[M*N];
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
this->data[i*N+j] = this->getRead(i, j);
}
}
double thr_val = this->Mean();
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
if (this->data[i*N+j] > thr_val)
this->data[i*N+j] = 1;
if (this->data[i*N+j] < thr_val)
this->data[i*N+j] = 0;
}
}
}
エラーはどうなっていますか? – Castilho
Doh - 申し訳ありませんが、今私は主な質問にそれを編集します。 – LBHoward
これは実行時エラーかコンパイル時エラーですか? – je4d