У меня есть две внутренние структуры внутри окружающего класса, и в одной из структур у меня есть член-указатель на объекты типа другой структуры. И чтобы улучшить читаемость и прояснить, что предварительное объявление предназначено для структуры, которая нуждается в этом, я поместил предварительное объявление в саму внутреннюю структуру. Как то так
class Enclosing{
public:
struct InnerA{
struct InnerB; // forward declaration inside InnerA to improve readability
InnerB* b;
// other members
};
struct InnerB{
// lots of member variables
};
};
А потом где-то снаружи у меня есть функция
void DoSomething(){
Enclosing::InnerA a;
// error incompatible types Enclosing::InnerB* and Enclosing::InnerA::InnerB*
Enclosing::InnerB* ptr = a.b;
}
Насколько я понимаю, предварительные объявления - это только способ сообщить компилятору, что класс существует, а не определять совершенно другой новый тип. Это стандарт? если так, есть ли способ получить предварительное объявление внутри структуры, не считая его другим типом?