The error means there are some methods of the class that aren’t implemented. You cannot instantiate such a class, so there isn’t anything you can do, other than implement all of the methods of the class.
On the other hand, a common pattern is to instantiate a concrete class and assign it to a pointer of an abstrate base class:
class Abstract { /* stuff */ 4};
class Derived : virtual public Abstract { /* implement Abstract’s methods */ };
Abstract* pAbs = new Derived; // OK
Just an aside, to avoid memory management issues with the above line, you could consider using a smart pointer, such as an `std::unique_ptr:
std::unique_ptr
Visual Studio’s Error List pane only shows you the first line of the error. Invoke View>Output and I bet you’ll see something like:
c:pathtoyourcode.cpp(42): error C2259: ‘AmbientOccluder’ : cannot instantiate abstract class
due to following members:
‘ULONG MysteryUnimplementedMethod(void)’ : is abstract
c:pathtosomeinclude.h(8) : see declaration of ‘MysteryUnimplementedMethod’