Làm thế nào để truy cập(access) vào vào biến(var) của 1 class từ 1 class khác

Ví dụ: ta có

class SinhVien{
	string ID;
	string name;
	int diem;
	friend class QuanLy;	
public:
	void Nhap(SinhVien *arr, int n);
}

class QuanLy
{
	void NhapSoLuongSV (int &n); // (n thuộc class SinhVien)

	void InSV(SinhVien *arr, int n); // in các sv có điểm >9
}

Lâu mình không làm tới C++. Câu trả lời có thể thiếu sót

Nếu các biến của bạn là public thì có thể trỏ trực tiếp từ instance của class đó
Bạn có thể sử dụng getter để lấy các giá trị các biến private

  public:
        SinhVien();
        ~SinhVien();

        void set_diem(int d);
        int get_diem() const;


        void SinhVien::set_diem(int d)
        {
             diem= d;
        }

        int player::get_diem()
        {
             return diem;
        }

Hoặc sử dụng friend method như trong bài viết này của mình -> Here

A cho e hỏi ~SinhVien(); có ý nghĩa gì v ạ? Nó có khác gì so với hàm Sinhvien(); ko ạ? Sao phải khai báo cả 2 ạ? Em cảm ơn

nó là hàm hủy. Nếu trong hàm tạo có cấp phát động thì phải giải phóng nó ở hàm hủy. Ở đây class SinhVien ko có cấp phát động gì hết thì khỏi cần viết hàm hủy cũng được.

2 Likes

Rule of three là cứ phải viết cả 3 hàm chứ :smiley:

  • Hàm hủy (destructor)
  • Hàm copy (copy constructor)
  • Hàm gán (copy assignment operator)
2 Likes

cứ viết cho chắc, giờ chưa dùng nhưng sau sẽ dùng lại, chả nhẽ lại lôi mã cũ ra sửa :slight_smile:

1 Like

Thực ra đường nào cũng phải lôi ra sửa à. Có điều nó tạo cho mình thói quen viết đủ.

Lúc mới code C++ Đạt cũng lười viết mấy cái này. Nhưng mà code nhiều thì sẽ thấy là đằng nào cũng cần phải viết. IDE tốt nó tạo giúp mình cái skeleton này. Không nhớ là có không, nhưng nếu có thì tốt.

1 Like

Mình đã tham khảo các góp ý và thấy rằng cách dùng tính kế thừa có vẻ hợp lý nhất.
“Derived class” sẽ có tất cả các hàm của “base class” -> “Derived class” dùng được các biến của “base class” gián tiếp thông qua các hàm được kế thừa

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