Hỏi về class trong truy cập tới biến của class ngoài mà không cần tham chiếu

mình đang bí trường hợp class lồng class như thế này, mình muốn hàm func của class B có thể dùng đc biến a của class A đang lồng nó mà không qua việc truyền tham chiếu thì có khả thi không?
code :

class A {
private:
    int a = 11;
    class B {
        public:
            void func() { làm gì đó với a }
    }
public:
    B c;
}

int main()
{
    A a;
    a.c.func();
    return 0;
}

sao ko viết hàm public c_func() { xài a } luôn mà thông qua c làm gì :V

class A {
public:
  void c_func() { làm gì đó với a }
private:
  int a = 11;
};
3 Likes

do bài mình yêu cầu trong class A sẽ có mảng có các phần tử là class C mà func() của từng phần tử sẽ ra kết quả khác nhau theo giá trị của a của A. a của A thay đổi thì kết quả của các func() cũng thay đổi theo liền 24/24.

vậy class B phải có constructor nhận con trỏ tới biến a của A

class A {
private:
  class B {
  public:
    B(int* a) : pa{a} {}
    void func() { ... }
  private:
    int* a;
  };
private:
  int a;
public:
  B b{&a};
};

còn xài nhiều biến hơn chỉ 1 biến a thì lấy con trỏ tới A :V

3 Likes

không bạn trừ trường hợp này ra vì khi tạo mảng class B thì đồng nghĩa nhận lại mảng biến trỏ a (địa chỉ trọ là dạng 8 byte * 2 nên bị kêu là nặng quá)

vậy bó tay rồi :V

nếu A là singleton thì có thể khai báo static int* a trong B :V

2 Likes

cũng bó tay thiệt nhưng cái static nghe khá khả quan nhưng có khả năng class A lại nằm trong một class khác và bị sử dụng như class B :((

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