Опция
«peachykeen» может быть оптимальной, но другой вариант, который может вам помочь, если вы используете наследование или подклассы своих сущностей, может быть:
Declarations.h
// these classes doesn't have references to each others
public class FinantialBaseClass
{
// ...
}
public class CorporationBaseClass: FinantialBaseClass
{
// ...
}
public class MarketBaseClass: FinantialBaseClass
{
// ...
}
public class EquitiesBaseClass: FinantialBaseClass
{
// ...
}
FinantialApp.h
// these classes have references, but, to parent classes,
// not each others
public class CorporationClass: CorporationBaseClass
{
vector<EquitiesBaseClass> Equities;
}
public class MarketClass: MarketBaseClass
{
vector<EquitiesBaseClass> Equities;
}
public class EquitiesClass: EquitiesBaseClass
{
public CorporationBaseClass* Corporation;
public MarketBaseClass* Market;
}
public class MyFinantialAppClass
{
protected vector<CorporationBaseClass> Corporations;
protected vector<MarketBaseClass> Markets;
protected vector<EquitiesBaseClass> Equities;
public CorporationBaseClass* addCorporation() { ... }
public MarketBaseClass* addMarket() { ... }
public EquitiesBaseClass* addEquity(CorporationBaseClass, MarketBaseClass)
{ ... }
}
Обратите внимание, что рабочие классы, каждый из них как "базовый класс"", и рабочие классы ссылаются друг на друга базовый класс, а не сам класс.Это помогает вам избегать циклических / форвардных вещей, которые трудно использовать.
Обратите внимание, что есть приложение.класс, который служит контейнером для основных классов и классов ассоциаций ("equity").
Убедитесь, что класс "equity" представляет связь между "Market" и "Corporation".Этот класс является НЕ частью «Рынка» и «Корпорации», но компонентом «Приложения».Если вы хотите добавить какой-либо класс, вы делаете это через контейнер, а не в список самих классов.
Обратите внимание, что в качестве дополнительного есть дополнительный «базовый класс финансовых средств», это может помочь вам с вещами, которыми поделились все классы.