Error: C2228: left of '' must have class/struct/union
In support to the accepted answer.
From dcl.init#11:
An object whose initializer is an empty set of parentheses, i.e., ()
, shall be value-initialized.
[ Note: Since
()
is not permitted by the syntax for initializer,X a();
is not the declaration of an object of
class X
, but the declaration of a function taking no argument and returning an X. The form()
is permitted in certain other initialization contexts ([expr.new], [expr.type.conv], [class.base.init]). — end note ]
You made an error here:
DatabaseControl myDBControl();
You declared a function called myDBControl
taking no arguments and returning a DatabaseControl
.
Object declarations without any constructor arguments must omit the ()
:
DatabaseControl myDBControl;
This is related to (but is not precisely) the "most vexing parse", in that it's caused by the same language rule that statements are function declarations if they can be so parsed.
DatabaseControl myDBControl();
should be
DatabaseControl myDBControl;
You need to say this:
DatabaseControl myDBControl;
myDBControl.addEmployee();