>>254
CTest2はCTestより後で定義されてるからCTestはCTest2のサイズを知らない。

そういう場合はポインタ使え。よくある相互参照の解法だ。
ポインタそのものは環境依存だがサイズは固定値。
指してる先の構造体(この場合のCTest2)のサイズがまだ分からない時にも使える。

逆に、CTestはCTest2より前に定義されてるから
CTest2はCTestのサイズを知っている。よってポインタにする必要無し。

したがってこの1箇所の修正でコンパイル通るんじゃないかな?
class CTest
{
  void Init( CTest2 *test ) {}
};
他のコードは一緒。

VC++7.1(のcl.exe)とcygwin g++3.2の両方でコンパイル通ったよ。