Это не имеет никакого смысла ...
class WFoo {
Foo::Foo A;
Foo::Foo B;
};
Вы имеете в виду ...
class WFoo {
public:
Foo A;
Foo B;
WFoo(FILE* fa, FILE* fb);
};
WFoo::WFoo(FILE* fa, FILE* fb) :
A(fa), B(fb)
{
}
Помните также, что поля инициализируются не в порядке, который вы читаете в конструкторе, а в том порядке, в котором они объявлены в классе!
Итак ...
#include <iostream>
struct XFoo
{
XFoo(const char* s) { std::cout << s << std::endl; }
};
struct YBar
{
XFoo a;
XFoo b;
YBar() : a("A"), b("B") {}
};
struct ZBar
{
XFoo b;
XFoo a;
ZBar() : a("A"), b("B") {}
};
int main()
{
YBar y;
ZBar z;
return 0;
}
распечатает ...
A
B
B
A