01/10/2018, 15:26
Code bị lỗi : Không gọi được đến hàm
Mọi người giúp em sửa lỗi này với ạ. em làm theo bài mẫu với con trỏ 1 chiều thì chạy bình thường nhưng làm với mảng 2 chiều lại bị lỗi không gọi được hàm với 3 đối. code của em đây em cảm ơn ạ!!
#include<iostream>
#include<stdio.h>
#include<conio.h>
using namespace std;
class matran
{
private:
int m,n;
float **A;
public:
matran(int cot,int hang,float **b);
void in();
};
void matran::in()
{
cout<<"
";
for(int i=0;i<m;i++)
{ cout<<"
"; // them
de in ma tran dung hon
for(int j=0;j<n;j++)
cout<<" "<<A[i][j];
}
};
matran::matran(int cot,int hang,float **b)
{
n=cot;
m=hang;
A=new float *[m];
for(int i=0;i<m;i++)
A[i]=new float [n];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
{
A[i][j]=b[i][j];
}
};
int main()
float a[3][3]={{1,2,3},{1,2,3},{1,2,3}};
matran B1(3,3,a);
B1.in();
}
Bài liên quan
Bạn đưa code hàm in lên đi.
mình thêm hàm in rồi đấy bạn ơi!!
Mảng đó không gán được đâu cách tính địa chỉ khác nhau lắm.
Bạn giải thích giúp mình với được không? đang làm bài tập mà mắc quá không hiểu tại sao!
int**
phải trỏ đến int* nên muốn tính A[i][j] với A là int** phải có A[i] trước đã. Ta biết A[i] = *(A+i) rồi, mỗi slot của A làint*
cũng là vùng nhớ nên&A[i][j] = *(A+i) + j
.Nhưng nếu A là mảng tĩnh thì A có kiểu
int[][m]
nên&A[i][j] = (int*)A + m*i + j
.Cảm ơn bạn, liệu có hướng nào giải quyết không? Hay phải bỏ luôn phần cấp phát trong hàm để viết một hàm khác?
Thì bạn mock đỡ một hàm chuyển đổi để test logic thôi, chứ tiếp nhận mảng tĩnh hai chiều thì phải cố định số cột đó.
cảm ơn bạn nhé , mình đã chạy được code với hàm mới rồi!