title: Calling base class's overloaded method
body: <p>I have this code:</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;string&gt;
  
  using namespace std;
  
  class A {
      public: void Print(int i) {cout&lt;&lt;i;}
  };
  
  class B : public A {
      public: void Print(string s) {cout&lt;&lt;s;}
  };
  
  int main() {
      B bInstance;
      bInstance.Print(1);
      return 0;
  }
  </code></pre>
  
  <p>This gives me an error:</p>
  
  <pre><code>error: invalid conversion from 'int' to 'const char*' [-fpermissive]
  </code></pre>
  
  <p>meaning it is trying to call B's Print without considering the inherited overload. But, A's Print should be callable by a B instance. In fact, if I change the call to </p>
  
  <pre><code>bInstance.A::Print(1);
  </code></pre>
  
  <p>then it compiles without any errors, but I wanted to avoid having to write the class scope operator each time.
  Is there a way to tell the compiler I am trying to call the base class's overload of the function?</p>