, относящиеся к предыдущему question, у меня сейчас следующий:Избегайте круговой зависимости?
В следующем декорациях:
class B;
class A
{
// stuff, methods and so on
B b;
};
class B
{
// stuff, methods and so on
A a;
};
Здесь мы имеем круговую зависимость между A
и B
, но этот код плохо формируется с B
является неполным типом. Решение состоит в том, чтобы изменить B
указателем B
с помощью умных указателей, например. Но добавление указателя увеличивает сложность и ресурсы, затрачиваемые ненужно, поскольку вам не нужен указатель!
В предыдущем question Я старался избегать использования указателей с помощью шаблонов, поэтому я задерживаю создание класса в точке, где определены оба класса, но я был неспособен сделать это успешно.
Невозможно ли избежать указателей? Существуют ли хорошо известные дескрипторы, чтобы избежать круговых зависимостей?
Это не имело бы смысла, если бы оно скомпилировалось. Вы говорите, что экземпляр 'A' содержит экземпляр' B', но экземпляр 'B' содержит экземпляр' A' тоже. Для создания такого объекта вам понадобится бесконечное количество памяти и бесконечное количество времени. То есть конструктор 'A' и конструктор' B' будут бесконечно возвращаться. – cdhowie
Почему вы пытаетесь избежать указателей? – metalhead
Вы также можете использовать ссылки. – dyp