Если вы просто хотите решить проблему компиляции. Убедитесь, что вы включили SubTypeB.h
в SubTypeA.cpp
и SubTypeA.h
в SubTypeB.cpp
.
Возможно, вы захотите решить основную проблему, которая у вас, вероятно, есть. Вы хотите создать объект типа SubTypeB
в SubTypeA
и наоборот. Таким образом, класс SubTypeA
нуждается в SubTypeB
для компиляции и SubTypeB
нуждается в SubTypeA
. Таким образом, у вас есть круговая зависимость, которая почти всегда является недостатком дизайна, который вы должны решить. Поскольку определения в заголовках не зависят от другого класса, его можно скомпилировать, но это может измениться, если в будущем.
Способ устранения этого недостатка зависит от того, что вы хотите сделать, и от того, будет ли эта конструкция даже имеет смысл. Вы можете написать третий класс или просто функцию, которая реализует логику c из functionA
и создает один из двух SubTypes
в зависимости от условия.