la surcharge de méthode de classe de base dans la classe dérivée

Je suis en train d'essayer de comprendre pourquoi le code suivant ne compile pas, apparemment, la solution s'appuie en particulier de déclarer la dépendance sur method_A dans la classe dérivée.
Veuillez consulter le code suivant:

class Base
{
  public:

    void method_A(int param, int param2)
    {
      std::cout << "Base call A" << std::endl;
    }

};

//does not compile
class Derived : public Base
{
  public:

    void method_A(int param)
    {
      std::cout << "Derived call A" << std::endl;
    }
};

//compiles
class Derived2 : public Base
{
  public:
    using Base::method_A; //compile
    void method_A(int param)
    {
      std::cout << "Derived call A" << std::endl;
    }
};

int main ()
{
  Derived myDerived;
  myDerived.method_A(1);
  myDerived.method_A(1,2);

  Derived2 myDerived2;
  myDerived2.method_A(1);
  myDerived2.method_A(1,2);
  return 0;
}

"test.cpp", (S) Le mauvais nombre d'arguments ont été spécifiés pour "Dérivée::method_A(int)".

Qu'est-ce que la raison technique qui empêche la classe dérivée de connaître sa classe de base est la mise en œuvre de la méthode c'est d'essayer de surcharge?
Je suis à la recherche pour mieux comprendre comment le compilateur/linker se comporte dans ce cas.

  • Êtes-vous manque virtual?
  • non, mon intention est de surcharge de la fonction. S I l'on n'a pas d'objet de l'héritage, il serait comme: void method_A(int param int param2); void method_A(int param);
InformationsquelleAutor dau_sama | 2013-05-30