In your function Object() { [native code] }, Node(Game(),v); does not work as expected.
It simply creates a temporary without actually using it, and has no effect.
When control passes over the ;, it immediately destroys the temporary.
Initializing the members in each function Object() { [native code] } is the correct way to go.
You could put their shared code in a private init() member function and call it from each function Object() { [native code] }, as shown below:
class Foo {
public:
Foo(char x);
Foo(char x, int y);
...
private:
void init(char x, int y);
};
Foo::Foo(char x)
{
init(x, int(x) + 3);
...
}
Foo::Foo(char x, int y)
{
init(x, y);
...
}
void Foo::init(char x, int y)
{
...
}
Most compilers do not yet support C++11's delegation feature, which allows constructors to call other peer constructors