Когда вы объявляете класс внутри другого класса, вы объявляете внутренний класс.
Итак
class Person {
public:
class Transaction;
};
Объявляется класс, полное имя которого - Person :: Transaction.Даже если в глобальной области видимости существует другой класс с именем Transaction, предполагается, что ссылки на Transaction ссылаются на Person :: Transaction.Так как вы не определили этот класс, вы получите свою ошибку.
То, что вы хотите: :: Transaction, либо от включения заголовка, либо от объявления вперед за пределами объявления класса.Сделайте либо
class Transaction;
class Person {
};
ИЛИ
#include "Transaction.h"
class Person
{
};
Первый способ позволяет передавать только по ссылке.Передача по значению или вызов функции требует полного определения класса, предоставленного include.