Bị lỗi khi add thêm sinh viên vào danh sách

Đây là code của em về quản lý sinh viên ạ

#include<iostream>
#include<string>
using namespace std;

class lopSH;

class SV {
  float diem;
  string name;
  lopSH *lop;

  
public:
  SV() {};
  ~SV() {};

  friend istream& operator >>(istream& in, SV& x) {
    cout << "Nhap ten:";
    cin >> x.name;
    cout << "Nhap diem";
    cin >> x.diem;
    return in;
  }

  friend ostream& operator << (ostream& out, SV& x) {
    cout << "ten: ";
    cout << x.name << endl;
    cout << "deim: ";
    cout << x.diem << endl;
    return out;
  }
  const SV& operator = (const SV& x) {
    if (this != &x) {
      diem = x.diem;
      name = x.name;
    }
    return *this;
  }
  bool operator!=(const SV& x) {
    return  (name != x.name);
  }

};

class lopSH {
  string name;
  int siso;
  SV* svien;
public:
  lopSH(){};
  lopSH(string name, int siso):name(name),siso(siso) {
    svien = new SV[siso];
    for (int i = 0; i < siso; i++) {
      cin >> svien[i];
    }
  }
  ~lopSH() {
    delete[]svien;
  }

  friend istream& operator >> (istream& in, lopSH& x ) {
    cout << "Tenlop:";
    in >> x.name;
    cout << "siso";
    in >> x.siso;
    x.svien = new SV[x.siso];
    for (int i = 0; i < x.siso; i++) {
      cin >> x.svien[i];
    }
    return in;
  }



  int getsiso() { return siso; }
  friend ostream& operator << (ostream& out, lopSH& x) {
    cout << x.name<<endl;
    cout << x.siso<<endl;
    for (int i = 0; i < x.siso; i++) {
      cout << x.svien[i];
      cout << endl;
    }
    return out;
  }
  SV& operator [] (int i)const { return svien[i]; }
  const lopSH& operator = (const lopSH& x) {
    if (this != &x) {
      delete[] svien;
      siso = x.siso;
      svien = new SV[siso];
      for (int i = 0; i < siso; i++) svien[i] = x[i];
      name = x.name;
    }
    return *this;
  }

   void addSV(SV& x ,int vt) {
    for (int i = siso-1; i >= vt; i--) {
      svien[i+1] = svien[i];
    }
    svien[vt] = x;
    siso++;
  }
};

int main() {
  lopSH x;
  cin >>x;
  cout << x;
  SV xx;
  cin >> xx;
  x.addSV(xx,1);
}

Khi em add 1 thằng sv vào danh sách thì nó bị lỗi như hình ạ

Cho em hỏi là em sai ở chỗ nào ạ, e cảm ơn!

EDIT (@library): Cậu nhớ dùng Markdown để format các code ở các post sau nhé @newbieHere !

Constructor không tham số của bạn không khởi tạo mem (không làm gì luôn :smiley: ) nên không có mem để thao tác. Có thể viết static private method để hỗ trợ.

3 Likes

em đã thêm mem cho constructot mặc định, nhưng chương trình vẫn lỗi a ơi

lopSH(){
	name = "";
	siso = 0;
	svien = new SV[siso];

};

Không cấp mem là đúng mà :smiley: cái đó là giải thích thôi.

4 Likes
Lớp = new Lớp(0 cái bàn);
Lớp.addSV(new SV(...))`;

Tự hiểu.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?