C2022: Pure virtual can be called only using explicit scope resolution

[ERROR]

Description

Pure virtual functions can be called from a constructor of an abstract class; the effect of calling a pure virtual function directly or indirectly for the object being created from such a constructor is an error.

Example
  class A{

  
  public:

  
    virtual void f(void) = 0;

  
    A(){

  
      f();

  
    }

  
  };

  
Tips

A pure virtual can be defined. It can be called using explicit qualification only.

  class A{

  
  public:

  
    virtual void f(void) = 0;

  
    A(){

  
      A::f();

  
    }

  
  };

  
  void A::f(void){ // defined somewhere

  
    //...

  
  }