编写一个友元函数来读取矩阵指定所在行列的值
时间: 2024-02-01 10:16:21 浏览: 24
以下是一个简单的示例,展示了如何编写一个友元函数来读取矩阵指定所在行列的值:
```
#include<iostream>
using namespace std;
class Matrix;
class Element
{
int row;
int col;
public:
Element(int r = 0, int c = 0) : row(r), col(c) {}
friend int get_element(Matrix& m, Element e);
};
class Matrix
{
int **mat;
int rows, cols;
public:
Matrix(int r = 0, int c = 0) : rows(r), cols(c)
{
mat = new int*[rows];
for (int i = 0; i < rows; i++)
mat[i] = new int[cols];
}
void set_matrix()
{
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
cin >> mat[i][j];
}
}
}
friend int get_element(Matrix& m, Element e);
};
int get_element(Matrix& m, Element e)
{
if (e.row >= m.rows || e.col >= m.cols)
{
cout << "Invalid index for matrix." << endl;
return -1;
}
return m.mat[e.row][e.col];
}
int main()
{
Matrix m(2, 2);
m.set_matrix();
Element e(1, 1);
cout << "Element at (" << e.row << "," << e.col << ") = " << get_element(m, e) << endl;
return 0;
}
```
在这个例子中,我们定义了两个类:Matrix 和 Element。Matrix 类表示矩阵,它拥有一个二维数组 mat 作为其数据成员。Element 类表示矩阵中的一个元素,它拥有两个整型数据成员 row 和 col,表示元素所在的行和列。
我们在 Element 类中声明了一个友元函数 get_element,该函数可以访问 Matrix 类的私有数据成员。在 Matrix 类中,我们也声明了 get_element 函数为友元函数。这样,get_element 函数就可以访问 Matrix 类的私有数据成员 mat 了。
在主函数中,我们首先创建了一个 2x2 的矩阵 m,并使用 set_matrix 函数来设置矩阵的值。然后,我们创建了一个 Element 对象 e,表示矩阵中的一个元素。最后,我们调用 get_element 函数来读取矩阵中指定行列位置的元素值,并输出结果。
请注意,这只是一个简单的示例,实际应用中可能需要添加更多的错误检查等功能。