Сыроежка, суть же довольно проста: вы не можете объявлять в классе данные-члены, типы данных которых классу ещё не известны.

Сообщение от
Сыроежка
struct A { int a; }; *// а это его определение
Это определение самого класса. А вот сами типы данных-членов должны быть известны классу к моменту их
объявления в классе.
Если я что-то путаю, попровьте меня.