Đối tượng thuộc class này nằm trong 1 class khác

Em đang gặp đôi chút vấn đề về việc truy xuất dữ liệu của lớp Diem trong lớp Tamgiac:
Ví dụ như đoạn code dưới:

class Diem {
private:
int x;
int y;
public:
...}
class tamgiac{
private:
Diem a;
Diem b;
Diem c;
public:
...}

giờ e không biết cách làm sao để có thể truy xuất dc thuộc tính x ,y của từng điểm để tính toán cho nó @@ mọi người giúp e vs. E cảm ơn rất nhiều

Để private mấy cái properties thì access kiểu mô? catgun

3 Likes

ví dụ e muốn tăng 2 thuộc tính x,y của Diem a lên +1
mà tham số đầu vào chỉ là 1 biến thuộc lớp Tamgiac (đã có đủ thông tin), không dùng firend, chỉ dùng phương thức, làm sao e có thể truy xuất tới tới a.x, a.y khi 2 cái a và x không thuộc cùng 1 lớp đối tượng

Đấy, nút gỡ đây rồi!

Cách thực hiện như Java thường làm.
Tạo 2 phương thức public (1 get, 1 set) cho mỗi thuộc tính.

class Point{
    private:
    int x;
    int y;
    ...
    public:
    int getX(){
        return x;
    }
    void setX(int val){
        this->x = val;
    }
    int getY(){
        return y;
    }
    void setY(int val){
        this->y = val;
    }
...
}
3 Likes

Cho mình hỏi chút nha, ở class Diem sao lại có keyword private? Và bạn dùng nó nhưng có hiểu nó để làm gì ko?

3 Likes

Mik ms học oop và dc dạy như v ý @@ còn lí do vì sao thì thầy bảo sau này biết, bây h cứ private và public trước

Bạn cho mik hỏi hàm set có tác dụng j v

Ông thầy lười biếng. Nếu bạn có thể tự học tốt thì nên tìm tài liệu online tự học.

Nếu không hiểu mình đang làm gì thì càng học càng sai.

8 Likes

Tớ tóm tắt lại tí thôi, hàm set (thực ra gọi là setter) dùng để sửa dữ liệu trong object.
Ví dụ:

  • setX dùng để sửa private property x trong object.
  • setA dùng để sửa private property a trong object.

Khi cậu học OOP, cậu chắc chắn đã học tới encapsulation - một tính chất quan trọng nhất trong OOP. Việc để private là để phục vụ mục đích đó.
Cậu thử tham khảo link bài giảng mà @nitro2 có đề cập ở trên để hiểu rõ hơn xem :smile:

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