2016-05-10 4 views
0

Как я могу исправить ошибку «объект переменного размера не может быть инициализирован» со следующим кодом:Как исправить ошибку «Объект переменной размера не может быть инициализирован»?

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

ответ

1

Это:

sv A[i] =new sv(m,t,d,l,tl,ml,nh); 

выглядит как объявление другого массива sv называется A с размером вводного времени i к Compi ler (функция A99). Если вы хотите, чтобы присвоить элементу по индексу i, вы могли бы сделать:

A[i] = sv(m,t,d,l,tl,ml,nh); 

Обратите внимание, что new выделяет в куче и возвращает указатель, который здесь не требуется.

0

Вы уже объявили массив

sv A[100]; 

Для заполнения массива, просто использовать

A[i] = sv(m,t,d,l,tl,ml,nh); 
Смежные вопросы