error on constructing an abstract base class