У меня есть два класса: один из них имеет неполный тип, а второй должен использовать этот неполный тип.Есть ли способ ссылки на «внешний тип», аналогично тому, как вы ссылаетесь на внешний объект?
Редактировать: Подробно о структуре моих классов.
К сожалению, я тоже не могу использовать указатели.Мой код выглядит примерно так:
class CompleteA {
private:
friend CompleteB;
struct IncompleteA;
boost::shared_ptr<IncompleteA> data_;
};
class CompleteB {
public:
void SomeFct(CompleteA& a) {
// I need to access a member of the incomplete type
a.data_->someMember;
}
};
Я мог бы иметь отдельную пару заголовочных и исходных файлов, но это было бы немного излишним в моем случае.Неполный тип - это просто структура с одним членом;Я использую это, чтобы скрыть реализацию.(Однако, если нет другого варианта, я прибегну к отдельному заголовку ...)
О моем использовании друга, пожалуйста, проигнорируйте это и сконцентрируйтесь на том, что я прошу помочь.Я размышлял о том, должен ли я использовать здесь друга или нет, и я пришел к выводу, что использование геттеров (вместо друга) представит реализацию.