Вы не можете этого сделать, поскольку это потребует бесконечной рекурсии. (Ваш t
будет содержать еще t
, поэтому у вас будет t.t.t.t.t.t.t.t....
до бесконечности). Однако вы можете поместить указатель на другой объект внутри, например,
private:
Test *t;
Проблема в том, что когда вы пишете:
Test t;
Компилятору необходимо , чтобы узнать размер Test
, чтобы обеспечить достаточное хранилище. В тот момент, когда вы написали Test t;
, этот размер неизвестен, потому что компилятор не видел конца определения Test
(то есть ;
после закрытия }
) и, следовательно, не может определить размер его.