在 c++ 中将数组作为参数传递给类
Passing array as parameter to a class in c++
我需要创建一个程序来添加两个矩阵,但它必须显示对象和类的用法。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 语句,因为它返回一个整数,否则会出错。
- 在函数中使用 const int size 参数创建数组会在 Visual Studio 中抛出错误 C++:表达式的计
- 如何在模板函数中实例化其长度使用模板参数的数组
- 基于参数创建数组
- 我在解决此错误时遇到问题.我正在努力在主函数中传递数组
- 在 c++ 中使用模板传递数组时出现问题
- Pybind11 默认参数 numpy 数组或 None
- 传递数组结构、ofstream 和 interger 以运行
- 有没有办法根据命令行参数定义数组大小?运行时与编译时实例化?
- 在C++中传递数组作为函数参数的方法
- 函数参数绑定通过参考与传递指针传递数组的规则
- 如果数组变量在 c# 代码中定义为“ref”参数,则如何传递数组变量
- 你究竟如何通过函数的参数传递数组?
- c++ 传递数组而不是可变长度参数列表
- 如何在我的实际参数中通过引用传递数组
- 如何在函数C++中传递数组成员作为参数
- 在函数中传递数组作为引用参数
- 通过引用传递数组参数
- 在c++中传递数组作为函数参数
- 如何在构造函数中传递数组作为参数?c++
- 为什么编译器不在参数中传递数组字符 *arr[] 的大小?