Почему можно не писать include, если в качестве поля указатель на объект

Почему можно не писать include "SomeClase.h", а достаточно просто написать class SomeClass; если в качестве поля указатель на объект?

class SomeClass;

class ClassOne {

...

SomeClass *someObject;
}

Ответы (1 шт):

Автор решения: Harry

Вы неверно сформулировали вопрос. Давайте переформулируем его иначе - почему достаточно указать неполное объявление класса

class SomeClass;

если он используется только в качестве ссылки или указателя?

Потому что размер указателя/ссылки известен заранее, а больше в этот момент компилятору ничего знать и не надо - никакое внутреннее содержимое этого класса, так что ему достаточно неполного типа.

Вот если вы начнете использовать его внутреннее содержимое - например, вызов someObject->func() или даже если просто нужен полный его размер - тогда без полного типа не обойтись...

Это, конечно, не строгое и не полное пояснение, но примерно, чтоб понимать...

→ Ссылка