Имеет отношение, в котором владелец может знать о владельце

#c #oop #design-patterns

#c #ооп #шаблоны проектирования

Вопрос:

У меня есть два класса Device и DeviceMemory , Device имеет поле memory типа DeviceMemory , так что при Device уничтожении DeviceMemory оно освобождается.

 class DeviceMemory {
    void func();
}

class Device {
    VkPhysicalDevice phys_dev;
    VkDevice logi_dev;

    DeviceMemory memory;
}
  

Как я могу func получить доступ к phys_dev и logi_dev с устройства-владельца?

Комментарии:

1. Если они так тесно связаны, должны ли они действительно быть отдельными объектами?

2. DeviceMemory должна иметь ссылку на устройство (например, переданную в конструкторе DeviceMemory), или phys_dev / logi_dev должны быть переданы в качестве параметров в func

3. Это звучит как плохой дизайн. Что это func на самом деле, и почему память должна знать, какому устройству она принадлежит?

4. @Matt потому что наличие каждой отдельной функции внутри DeviceMemory have VkPhysicalDevice phys_dev в качестве аргумента кажется утомительным

5. @MacelaruTiberiu Ваш вопрос слишком расплывчатый, чтобы принять краткое решение.