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();

Tags:

C++

Sqlite

Qt