The compiler is pointing you to the right direction: your class EItem does not have a default constructor - hence you should supply one.
Quoted from here:
What happens if we do not declare a default constructor and then
instantiate our class? The answer is that C++ will allocate space for
our class instance, but will not initialize the members of the class
(similar to what happens when you declare an int, double, or other
basic data type).
Without knowing the definition of your EItem
class, a minimal example of implementing a default constructor is:
class EItem {
...
public:
...
//this is a minimal default constructor
EItem() {
...
//initialize and set the values for any data members of the class here
...
}
...
}
For more reading on this and more importantly why you should always supply one in your classes, see the following:
http://en.wikipedia.org/wiki/Default_constructor