我正在尝试计算矩形的周长。首先,我将向用户提示4次X和Y线并将其存储到2D阵列中,并将此2D阵列传递给另一个类,该类是继续计算周长的方法类。但问题是,我不知道如何将2d数组传递给方法类。
我不是在问如何计算周长,我只需要知道如何将2D数组从main传递给方法类,并在方法类中获取2D数组。 请指教。
的main.cpp
Method method;
int main() {
int storeXandY[4][2];
for(int i=1;i<5;i++)
{
cout << "Please enter x-ordinate" << i<< endl;
cin>>storeXandY[i][0];
cout << "Please enter y-ordinate" << i << endl;
cin>>storeXandY[i][1];
}
//how to pass the 2D array to method class to do some calculations?
// I was thinking something like passing the 2d array to a consturctor but don't know whether it can be done
method.constructor(storeXandY);
}
method.h
//not sure of what to do
public:
constructor() {
}
method.cpp
//how to get the cords from 2d array from main
请指教。谢谢
答案 0 :(得分:0)
你可以这样做:
class Method{
...
public int calcPerimeter(int vals[4][2])
{
// do your calculation here using vals array
}
...
}
从main(),你可以做到:
Method m = new Method();
int perimeter;
m.calcPerimeter(<your_array_name>);
答案 1 :(得分:0)
由于您正在编写C ++,因此应尽量避免使用C风格的数组。我会这样做
Method method;
int main() {
vector<vector<int> > storeXandY(4);
for(int i=0; i!=4; ++i) storeXandY[i].resize(2);
for(int i=1;i<5;i++)
{
cout << "Please enter x-ordinate" << i<< endl;
cin>>storeXandY[i-1][0]; /* you need i-1 here, not i */
cout << "Please enter y-ordinate" << i << endl;
cin>>storeXandY[i-1][1];
}
method.calcPerimeter(storeXandY);
}
其中method::calcPerimeter
声明如下
your_return_type method::calcPerimeter(const vector<vector<int> >& rectangle);
使用向量的优点是,您可以通过调用其size
成员函数来获取它们所持有的元素数,以便在上面的代码中storeXandY.size()
等于4和{{1}等于2。