Да, требование определенного порядка для включений в c ++ является признаком плохого дизайна библиотеки / заголовка.
Хотя для прямого использования может потребоваться включение более одного файла для полного использования класса. Смотрите пример ниже:
// А.ч
class B; // forward declaration
class A
{
void doStuff(const B& b);
};
// main.cpp
#include <A.h>
#include <B.h>
int main()
{
A a;
B b;
a.doStuff(b);
}