1
매트릭스 조작을위한 간단한 클래스를 작성하기 시작했습니다. 한 생성자는 하나의 숫자가있는 행렬을 채우고 다른 하나는 인수로 2 차원 배열을 사용합니다.반환 값과 함께 프로세스가 종료되었습니다. 3221226356
#include <iostream>
using namespace std;
int i,j;
class Matrica
{
public:
Matrica(int, int, double);
Matrica(int, int, double*);
~Matrica();
void saberi(Matrica, Matrica);
void read();
void print();
private:
int n,m;
double* matrix;
};
Matrica::Matrica(int a, int b, double broj)
{
n = a;
m = b;
matrix = new double[n*m];
for(i=0;i<n;i++) {
for(j=0;j<m;j++) {
matrix[i*n + j] = broj;
}
}
}
Matrica::Matrica(int a, int b, double* matr)
{
n = a;
m = b;
matrix = new double[n*m];
for(i=0;i<n;i++) {
for(j=0;j<m;j++) {
matrix[i*n + j] = matr[i*n +j];
}
}
}
Matrica::~Matrica() {
delete[] matrix;
}
void Matrica::read() {
double e;
for(i=0;i<n;i++) {
for(j=0;j<m;j++) {
cout<< "insert element ["<<i<<"]["<<j<<"] :" <<endl;
cin >> e;
matrix[n*i +j] = e;
cout<< endl;
}
}
}
void Matrica::print() {
for(i=0;i<n;i++) {
for(j=0;j<m;j++) {
cout << matrix[n*i + j] << " ";
}
cout << endl;
}
}
void Matrica::saberi(Matrica A, Matrica B) {
cout << "foo";
}
int main()
{
Matrica A(3,3,1);
double K[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
Matrica B(3,3,&K[0][0]);
Matrica C(3,3,7);
C.saberi(A,B);
return 0;
}
인수로 두 개의 객체를 사용하는 빈 "saberi"메소드를 추가하기 전에 내 프로그램이 정상적으로 작동했습니다. 내가 그것을 부르면 내 프로그램이 3221226356 반환 값으로 고장난다. 무엇이 잘못 될 수 있습니까? 미리 감사드립니다. 당신이 당신의 함수 서명
void saberi(Matrica, Matrica);
값이 전달되는 Matrica
객체
Matrica
에 대한 적절한 복사 생성자를 제공하지 않기 때문에
'Matrica :: saberi (Matrica & A, Matrica & B)'를 시도하거나'Matrica'를위한 적절한 복사 생성자를 제공하십시오. –
@ πάντα ῥεῖ 고마워, 지금 의도대로 작동한다. – Jay