Как правило при предварительном объявлении (из «API Design for C ++», стр. 214), я включаю заголовок класса только в том случае, если I:
- использует объект этого класса в качестве члена данных в моем собственном классе или
- наследует от этого класса.
В во всех остальных случаях я просто объявил класс.
Однако недавно я случайно использовал в качестве члена данных класса форвард объявленного класса enum , и он скомпилирован.
Это действительно нормально для использования, или просто случайный взлом (и мне действительно нужен заголовок с определением MyEnum)?
// test.hpp
enum class MyEnum;
class A {
MyEnum myenum;
};