C++ C++;通过函数打印出2D阵列
所以我试图通过一个 函数调用printArray,但每次尝试时 它说标识符“print”未定义。。我肯定我在做些什么 超级超级错误,因此任何指针都将非常感谢:) 我也在尽可能的简单,没有指针和地址^^C++ C++;通过函数打印出2D阵列,c++,windows,c++11,C++,Windows,C++11,所以我试图通过一个 函数调用printArray,但每次尝试时 它说标识符“print”未定义。。我肯定我在做些什么 超级超级错误,因此任何指针都将非常感谢:) 我也在尽可能的简单,没有指针和地址^^ #include "stdafx.h" #include "iostream" using namespace std; int A[3][5]; class Matrix { public: Matrix() { A[0][1] = 5; A[1][2] = 3;
#include "stdafx.h"
#include "iostream"
using namespace std;
int A[3][5];
class Matrix {
public:
Matrix() {
A[0][1] = 5;
A[1][2] = 3;
A[2][1] = 2;
A[3][4] = 10;
}
void printArray(int height, int width);
};
int main()
{
printArray(A[3][5]);
return 0;
}
void Matrix::printArray(int width, int height) {
for (int i = 0; i < width ; i++) {
for (int y = 0; y < height; y++) {
cout << A[i][y] << " ";
}
cout << endl;
}
}
#包括“stdafx.h”
#包括“iostream”
使用名称空间std;
INTA[3][5];
类矩阵{
公众:
矩阵(){
A[0][1]=5;
A[1][2]=3;
A[2][1]=2;
A[3][4]=10;
}
void printary(整数高度、整数宽度);
};
int main()
{
打印阵列(A[3][5]);
返回0;
}
void矩阵::printArray(整数宽度、整数高度){
对于(int i=0;i cout是的,正如它所说,在您的main()
中,您试图调用其他地方没有提到的函数print
。此外,即使它是,它也可能会触发UB,因为您正试图用数组中不存在的元素调用它,在它的西北角(如果您只是指数组本身,则不需要指定其维度,因为在表达式上下文中,方括号[]
表示元素索引,而不是数组维度)
您的printary
接受两个参数,但您使用单个数组(非)元素作为参数调用它。在您的示例中,它应该是printary(3,5);
printary
是类的成员函数。因此您需要类的实例来调用它
Matrix m;
m.printArray(3, 5);
在main()
int main()
{
Matrix a;
a.printArray(3, 5);
return 0;
}
我相信此代码可能有更好的设计。此外,请检查a[3][4]
。在这种情况下,您的行索引不应超过2。存在一些问题:
您正在调用一个不存在的方法:print
-这就是错误的原因
不过,如果您打算调用printary
,您必须小心,因为它有两个参数,而不是一个(也是不同类型的)。您发送的是int类型的二维数组,而printary
应该接收两个int类型的参数
调用类的方法应该首先创建该类的对象,然后通过该对象调用该方法
如果您想在不创建对象的情况下调用它,应该使用关键字static
-了解它
我可以给你一个直接的答案,但我认为如果你阅读的话会对你有更大的帮助。知道如何声明一个类并不是万能的。你还需要学习如何使用它。以及idenitifier print是在哪里声明的?你是指printary吗?在任何情况下,这个调用print(a[3][5])没有意义。是的,我指的是printArray,但当我更改它时,它仍然是相同的。如果我正确命名它,printArray仍然表示它的未定义与参数声明和提供的参数相比。printArray()
是类Matrix
的一个方法。要调用此方法,您需要所述类的一个实例。int a[3][5];
为索引0…2和0…4保留内存。访问a[3][3]
是未定义的行为。任何情况都可能发生。a[1][5]也是如此
.ooh..是的,我忘了,哈哈,非常感谢!:D应该是printary(3,5)
不是真的,你需要一个矩阵实例矩阵?你是说其默认构造函数只在全局对象中存储一些值的类?是的,类printary
属于是的,谢谢你指出这一点..没有注意:)