Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 进程以返回值3221226356退出_C++_Arrays_Memory Management_Matrix_Multidimensional Array - Fatal编程技术网

C++ 进程以返回值3221226356退出

C++ 进程以返回值3221226356退出,c++,arrays,memory-management,matrix,multidimensional-array,C++,Arrays,Memory Management,Matrix,Multidimensional Array,我开始为矩阵操作编写简单的类,一个构造函数用一个数字填充矩阵,另一个以2d数组为参数 #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

我开始为矩阵操作编写简单的类,一个构造函数用一个数字填充矩阵,另一个以2d数组为参数

    #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;
}
#包括
使用名称空间std;
int i,j;
矩阵类
{
公众:
Matrica(int,int,double);
矩阵(整数,整数,双*);
~Matrica();
无效saberi(Matrica,Matrica);
无效读取();
作废打印();
私人:
int n,m;
双*矩阵;
};
Matrica::Matrica(inta,intb,double broj)
{
n=a;
m=b;
矩阵=新的双精度[n*m];

对于(i=0;i,您已经定义了函数签名

void saberi(Matrica, Matrica);
那里的
Matrica
对象是按值传递的,但是您没有为类
Matrica
提供正确的复制构造函数

解决当前问题的最简单方法是通过引用传递参数

void saberi(Matrica&, Matrica&);

无论如何,从长远来看,您应该提供一个合适的副本构造函数

Matrica(const Matrica&);

或者禁止它(只需将声明放在类的
private
部分)。

尝试
void Matrica::saberi(Matrica&A,Matrica&B)
或为
Matrica
提供适当的副本构造函数@πάνταῥεῖ 非常感谢,现在一切正常
Matrica(const Matrica&);