class A {
public:
    double p1, p2;
    virtual double fun(double, double) = 0;
};

class B: public A {
public:
    double fun(double, double) {};
};

class C: public A {
public:
    double fun(double, double) {};
};

void proc(A** a) {
}

int main() {
    B b;
    C c;
    A* a[2];
    a[0]=&b;
    a[1]=&c;

    proc(a);
}
