Используйте спецификаторы области и убедитесь, что вы не используете тип до тех пор, пока он не определен в файле:
class A
{
class B
{
public:
struct data
{
int number;
};
};
B::data myData;
};
Также обратите внимание, что предварительное объявление не работает, если вы просто не используете указатель на класс. Когда вы создаете экземпляр класса, как у вас, ему нужно определение для этого класса, доступного для него немедленно.