C++中的一个类中的成员函数可以使用CIN吗?
我正在尝试使用像this这样的成员函数初始化一个类矩阵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
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}{…}。正确的术语是析构函数而不是解构函数。谢谢你指出这一点。