Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.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++中的一个类中的成员函数可以使用CIN吗?_C++_Cin_Member Functions - Fatal编程技术网

C++中的一个类中的成员函数可以使用CIN吗?

C++中的一个类中的成员函数可以使用CIN吗?,c++,cin,member-functions,C++,Cin,Member Functions,我正在尝试使用像this这样的成员函数初始化一个类矩阵 class mat{ int r,c; float **p; public: mat(){} mat(int,int); void initialize(); }; mat :: mat (int r, int c){ //check for float and int if error occurs p=new float*[r]; for(int i=0

我正在尝试使用像this这样的成员函数初始化一个类矩阵

class mat{
    int r,c;
    float **p;
    
    public:
    
    mat(){}
    mat(int,int);
    void initialize();
};
mat :: mat (int r, int c){ //check for float and int if error occurs
    p=new float*[r];
    for(int i=0; i<r; ++i){
        p[i]=new float(c);
    }
void mat :: initialize(void){
    int i,j;
    cout<<"\nEnter the elements : ";
    for(i=0;i<r;++i){
        for(j=0;j<c;++j){
            cin>>p[i][j];
        }
    }
}
int main(){
    mat m1(3,3);
    cout<<"\nInitialize M1";
    m1.initialize();
    
    
    return(0);
}
但当我编译并运行它并尝试初始化矩阵时,程序从不停止接收输入。 谁能告诉我我做错了什么吗?

您需要像这样初始化r和c:

mat :: mat (int r, int c) :r(r), c(c){
    p=new float*[r];
    for(int i=0; i<r; ++i){
        p[i]=new float[c];
    }
}

别忘了添加析构函数。

你在哪里调用initialize?我想你的错误在这里:p[I]=newfloatc;您的意思是分配一个浮点数并将其值设置为c还是分配c浮点数?@drescherjm是正确的,代码只有在c==1时才能工作。我认为您还需要在构造函数中初始化r和c您在构造函数中既不初始化c也不初始化r,因此,当您调用initialize时,它们的值是不确定的。使用initialiser列表是正常的最佳实践:mat::matint rows,int columns:r{rows},c{columns}{…}。正确的术语是析构函数而不是解构函数。谢谢你指出这一点。