У меня возникают проблемы с круговой ссылкой типов. Для implmentation из следующих способов:Циклическая зависимость в классах шаблонов
// Parent.h
template <typename OtherType>
class EnclosingType
{
public:
typename OtherType type_;
};
class OtherType
{
public:
EnclosingType & e_;
OtherType (EnclosingType & e) : e_(e) {}
};
Это требование заключается в том, что OtherType взять ссылку на объект EnclosingType так, что он может вызывать методы EnclosingType и EnclosingType может вызывать методы OtherType. Основная цель - предоставить разработчикам возможность создавать собственные типы, полученные из другого типа.
Каков наилучший способ обработки случая, когда существует такой тип циркулярной зависимости? Каково надлежащее объявление OtherType? Каково правильное объявление OtherType :: EnclosingType? Каково правильное объявление Enclosing :: OtherType :: type_? Это то, что мне нужно сделать, даже возможно?
Спасибо.
'EnclosingType' не является типом; это шаблон. И у него нет методов. 'OtherType' также не имеет методов. Я не понимаю, что вы пытаетесь сделать. – melpomene
проверить CRTP, это может быть полезно для этого сценария, хотя я не уверен, поможет ли вам решить вашу проблему. https://en.wikipedia.org/wiki/Curiously_recurring_template_pattern –