我有一个带有矩阵的类
class A{
private:
int matrix[10][5];
};
我还有其他带有方法的类,可以获取矩阵并对其进行处理
class B{
public:
void method(/*What to write here?*/){...}
};
因此,帮助释放语法。如何从班级获取矩阵并将其发送给其他班级?
答案 0 :(得分:0)
通过引用
void method(A& a){...}
如果method
不需要修改a
,则通过const引用传递
void method(const A& a){...}
根据下面的评论,您似乎想要这样的东西
class A
{
public:
void set_coordinates(...) { matrix[...][...] = ...; }
private:
int matrix[10][5];
};
class B
{
public:
void method(A& a) { a.set_coordinates(...); }
};
即将对象A
传递给方法B::method
,但向A
添加足够的公共方法,以便B
可以完成所需的工作。这就是封装的全部内容。
答案 1 :(得分:0)
您可以使用vector<vector<int> >
。这样,您就可以将它们传递出去。或者,您可以使用朋友类,或使用双指针。让我知道您是否想要提供这些示例。
使用双指针:
#include <iostream>
using namespace std;
class A{
private:
int **matrix;
public:
A()
{
// since 2D array is array of arrays,
// double pointer is a pointer to array of pointers
// define the matrix, first make matrix point to an array of pointers
matrix = new int*[10];
// now make each element of pointer array
// which is a pointer point to actual array
for(int i=0;i<10;i++)
matrix[i] = new int[5];
// initialize like simple 2D array (another function maybe)
for(int i=0;i<10;i++)
for(int j=0;j<5;j++)
matrix[i][j] = i+j;
}
// note the return-type
int ** getMatrix()
{
return matrix;
}
};
class B{
public:
// wherever you want to access matrix, pass the double pointer
void method(int **matrix){
for(int i=0;i<10;i++)
for(int j=0;j<5;j++)
cout << matrix[i][j] << endl;
}
};
int main() {
// create objects
A a;
B b;
// pass the double pointer to B's method
b.method(a.getMatrix());
return 0;
}