>>166
何度もいいますようにmyfoo(i, j);というのは関数の呼び出しです。コンストラクタの
呼び出しではありません。そしてmyfoo(int, int)という関数が宣言されていないので
エラーになるのだと思います。

どうしても初期化リストではなくコンストラクタ内からコンストラクタを呼び出すので
あれば、newの配置構文(placement-new)を使うか、単純にfoo型の一時オブジェクト
を作って代入してやればよいです。

class hoge {
int i;
int j;
foo myfoo;
public:
hoge() {
i = 100;
j = 200;
  myfoo = foo(i, j); //foo型の一時変数を代入
// new (&myfoo) foo(i, j); //こちらでもよい
}
void printfoo() const { myfoo.printfoo(); }
};