Почему можно не писать include, если в качестве поля указатель на объект
Почему можно не писать include "SomeClase.h", а достаточно просто написать class SomeClass; если в качестве поля указатель на объект?
class SomeClass;
class ClassOne {
...
SomeClass *someObject;
}
Ответы (1 шт):
Вы неверно сформулировали вопрос. Давайте переформулируем его иначе - почему достаточно указать неполное объявление класса
class SomeClass;
если он используется только в качестве ссылки или указателя?
Потому что размер указателя/ссылки известен заранее, а больше в этот момент компилятору ничего знать и не надо - никакое внутреннее содержимое этого класса, так что ему достаточно неполного типа.
Вот если вы начнете использовать его внутреннее содержимое - например, вызов someObject->func() или даже если просто нужен полный его размер - тогда без полного типа не обойтись...
Это, конечно, не строгое и не полное пояснение, но примерно, чтоб понимать...