Pourquoi une fonction virtuelle se cachés?

J'ai les classes suivantes:

class A {
public:
    virtual void f() {}
};


class B : public A{
public:
    void f(int x) {}
};

Si je dis

B *b = new B();
b->f();

le compilateur dit erreur C2660: "B::f' : la fonction ne prend pas de 0 arguments.
Ne pas la fonction dans B de la surcharge, puisque c'est une fonction virtuelle? Faire des fonctions virtuelles se cachent comme ça?

MODIFIER: j'ai en effet censé hériter de B à partir de A, qui montre le même comportement.

  • Peut-être que vous souhaitez tirer B de A?
InformationsquelleAutor Oszkar | 2010-11-10