F is a type, not an object (or function).
So F(test) is being interpretted as F test, i.e., declaring an F called test, which shadows the "int test" parameter.
oh thx for the explanation. Now the error makes perfect sense.
But how can i tell C++ to interpret F(test) as Function F with the single argument test?
As tpb said, F isn't a function, it's the name of an arbitrary class (type). If you want to create an object of type F (which calls the 1-arg constructor), do something like F obj(test);
or F {test}; // unnamed, temporary object