如何修复错误“可能无法初始化可变大小的对象”?

时间:2016-05-10 08:10:21

标签: c++ c++11 visual-c++

如何使用以下代码修复错误“可能无法初始化可变大小的对象”:

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);
}
}

2 个答案:

答案 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);