これは私の宣言にあると思いますが、よくわかりません。int 型の 2 次元配列を作成するクラス「Matrix」があります。クラスには、クラス オブジェクトに対して演算などを実行するためのオーバーロードされた演算子がいくつかあります。
要件の 1 つは、行列の次元が同じであることを確認することです。ディメンションは、2 つのプライベート int "dx" と "dy" として格納されます。
したがって、これを効率的にするために、次のように bool 型のメンバー関数を記述しました。
bool confirmArrays(const Matrix& matrix1, const Matrix& matrix2);
は関数ヘッダーで、宣言は次のとおりです。
bool Matrix::confirmArrays(const Matrix& matrix1, const Matrix& matrix2)
{
if (matrix1.dx == matrix2.dx && matrix1.dy == matrix2.dy)
{
// continue with operation
return true;
} else {
// hault operation, alert user
cout << "these matrices are of different dimensions!" << endl;
return false;
}
}
しかし、confirmArrays
別のメンバー関数内から呼び出すと、このエラーが発生します。
宣言されていない識別子の使用 confirmArrays
そのように関数を呼び出します。
// matrix multiplication, overloaded * operator
Matrix operator * (const Matrix& matrix1, const Matrix& matrix2)
{
Matrix product(matrix1.dx, matrix2.dy);
if ( confirmArrays(matrix1, matrix2) )
{
for (int i=0; i<product.dx; ++i) {
for (int j=0; j<product.dy; ++j) {
for (int k=0; k<matrix1.dy; ++k) {
product.p[i][j] += matrix1.p[i][k] * matrix2.p[k][j];
}
}
}
return product;
} else {
// perform this when matrices are not of same dimensions
}
}