Нет, нет способа обойти необходимость наличия typedef в заголовочном файле, который включен везде, где вам это нужно, но нет, вам необязательно также включать файл X.h
во втором случае.
Если у вас есть
typedef X my_type;
И X
- это класс, вы можете сделать это (в заголовке, отличном от X.h
):
class X;
typedef X my_type;
Который предварительно объявляет X, а затем создает псевдоним типа для него. Затем включите этот файл в X.h
.
Тогда, если вам нужно только неполное имя типа my_type
, вы можете включить очень короткий заголовочный файл typedef, и вам нужно будет включить X.h
только тогда, когда вам понадобится полное определение класса X
.