C1124: Cannot instantiate abstract class as return type

[ERROR]

Description

An abstract class may not be used as a function return type.

Example
  class A{

  
  public:

  
    virtual void f(void) = 0; //pure virtual function ==> A

  
                              //is an abstract class

  
  };

  
  void main(void){

  
    A fct(void);

  
  }

  
Tips

Use a pointer/reference to the object

  void main(void){

  
    A *fct(void);

  
  }

  

Use a derived class from abstract class

  class B : public A{

  
  public:

  
    void f(void){}

  
  };

  
  void main(void){

  
    B fct(void);

  
  }