在 c++ 中将数组作为参数传递给类

Passing array as parameter to a class in c++

本文关键字:参数传递 数组 c++      更新时间:2023-10-16

我需要创建一个程序来添加两个矩阵,但它必须显示对象和类的用法。m1.add();线路不工作。我收到错误 c2228 - .add 的左侧必须有类/结构/联合

该程序的基本思想是有一个名为matrix的类,它包含add()函数,该函数将两个二维数组(两个矩阵)相加并输出最终矩阵并将其显示给用户。

我正在尝试在类中使用构造函数,但不确定这是否是正确的方法。基本上,这两个矩阵必须通过函数或构造函数作为参数从主函数传递到类。

另外,我是否使用了太多的变量名称,例如 a,b,c,d,e,f?

#include "stdafx.h"
#include <conio.h>
#include <iostream>
using namespace std;
class matrix{
private:
int d[2][2];
int e[2][2];
int f[2][2];
public:
matrix(int a[2][2], int b[2][2]){
    d[2][2] = a[2][2];
    e[2][2] = b[2][2];
}
int add(){
        for (int i = 0; i < 2; i++)
            for (int j = 0; j < 2; j++)
                f[i][j] = d[i][j] + e[i][j]; 
        for (int i = 0; i < 2; i++)
        {
            for (int j = 0; j < 2; j++)
            {
                cout << f[i][j] << "t";
            }
        }
        cout << "n";
    }
 };
void _tmain(int argc, _TCHAR* argv[])
{
int x[2][2];
int y[2][2];
cout << "Enter numbers for Matrix A:n";
for (int i = 0; i<2; i++)
    for (int j = 0; j<2; j++)
    {       
        cin >> x[i][j];
    }
cout << "Enter numbers for Matrix B:n";
for (int i = 0; i<2; i++)
    for (int j = 0; j<2; j++)
    {
        cin >> y[i][j];
    }
matrix m1(int x[2][2], int y[2][2]);
m1.add();
cout << "n";
system("pause");
}

关于你的代码有很多要评论的地方,但最重要的是,这是你如何将数组传递给函数的方式:

int someArray[] = {1, 2, 3};
void incrementArrayElements(int *someArray)
{
  someArray[0] += 1;
  someArray[1] += 1;
  someArray[2] += 1;
}

数组本质上是指向其中第一个元素的指针,因此将函数参数声明为类型的指针。

关于您的代码,您有一个类matrix在构造函数中采用 2 个 rank2 数组来构造 2 个矩阵。这使得类的名称不好,因为它没有描述该类的对象到底是什么。

其次,你的成员函数 add 被声明为 int ,因此它应该返回一个整数。否则,你声明它void这是你在函数不返回任何内容时使用的。

第三,您似乎正在尝试将参数数组的内容复制到您的成员数组中,但这根本不是这样做的。我强烈建议您在尝试创建类似内容之前先阅读数组。

最后,在阅读了数组和网站上涵盖的任何其他基础知识之后,请查看运算符重载。了解重载operator+如何让您通过简单地执行a + b即可轻松、干净地a和类b 2 个对象。

实际上,您的代码中存在更多问题。您发布的片段显示您跳过了非常重要的基础知识。

这是代码中的问题;

在下一行中,您以不正确的方式传递参数;

matrix m1(int x[2][2], int y[2][2]);

相反,您需要按如下方式传递;

matrix m1(x, y);

另外,请在Add()方法中添加 return 语句,因为它返回一个整数,否则会出错。