如何使用以下代码修复错误“可能无法初始化可变大小的对象”:
sv A[i] =new sv(m,t,d,l,tl,ml,nh);
我的代码从开头到错误行:
#include<iostream>
#include<conio.h>
#include<string>
using namespace std;
class sv{
public: int msv;
string ten,lop;
float diem;
string tenlop, malop;
int namhoc;
sv();
sv(int m,string t, float d,string l,string tl,string ml, int nh);
class lophoc{
public:
lophoc();
lophoc(string tl,string ml, int nh); };
void hienthi(){
cout<<msv<<"\t"<<ten<<"\t"<<diem<<"\t"<<tenlop<<"\t"<<malop<<"\t"<<namhoc<<"\n";
}
};
sv::sv(){ }
sv::sv(int m,string t, float d,string l,string tl,string ml, int nh)
{
msv=m; ten=t; diem=d; lop=l; tenlop=tl; malop=ml, namhoc=nh; }
int main(){
sv A[100];
int n,i,m,d,nh;
string t,tl,ml,l;
cin>>n;
for(i=1;i<=n;i++){
cout<<"lan luot nhap ma sv,ten, diem,lop hoc: ";
cin>> m>>t>>d>>l;
cout<< "lan luot nhap ten lop, ma lop, nam hoc: ";
cin>>tl>>ml>>nh;
sv A[i] =new sv(m,t,d,l,tl,ml,nh);
}
}
答案 0 :(得分:1)
这:
sv A[i] =new sv(m,t,d,l,tl,ml,nh);
看起来像另一个名为sv
的{{1}}数组的声明,其运行时大小为A
到编译器(A C99功能)。
如果您想要分配到索引i
的元素,您可以执行以下操作:
i
注意A[i] = sv(m,t,d,l,tl,ml,nh);
在堆上分配并返回一个指针,这里不需要。
答案 1 :(得分:0)
您已经声明了一个数组
sv A[100];
要填写数组,只需使用
A[i] = sv(m,t,d,l,tl,ml,nh);