#include <iostream>
 
class Abstract
{
public:
  virtual void pureVirt() = 0;
};

class Derived: public Abstract
{
    int a;
public:
    Derived(int x):a(x){}
    virtual void pureVirt(){std::cout<<"in pureVirt: "<< a <<"\n";}
};
 
void func(Abstract ** b);
 
int main()
{
    Abstract * array[3];
    
    func(array);
    
    array[0]->pureVirt();
    array[1]->pureVirt();
    array[2]->pureVirt();
	
	std::getwchar();
	
    return 0;
}
 
void func(Abstract** b)
{
    b[0]= new Derived(0);
    b[1]= new Derived(1);
    b[2]= new Derived(2);
}