title: virtual method not seen in implementation
body: <p>i am currently working on a C++ project where i have an abstract interface that is implemented later on. The interface also has a implemented method which my implementation doesn't override.
  My problem is that when using my implementation, the compiler(MSVC) doesn't see the interface method. What causes this, and how can i resolve it?</p>
  
  <p>Here comes the code.</p>
  
  <pre><code>#include &lt;string&gt;
  #include &lt;vector&gt;
  using std::string;
  
  class A
  {
      public:
      string name;
  };
  
  class interface
  { 
  public:
      virtual int num_foo() = 0;
      virtual A* foo(int) = 0;
      virtual A* foo(string &amp;name){
          for ( int i(0); i &lt; num_foo(); i++)
              if ( foo(i)-&gt;name == name )
                  return foo(i);
          return 0;
      }
  };
  
  class implementation : public interface
  {
  public:
      virtual int num_foo() { return m_foos.size(); }
      virtual A* foo(int i) { 
          //check range 
          return &amp;m_foos[i];
      }
      std::vector&lt;A&gt; m_foos;
  };
  
  int main(...)
  {
      implementation impl;
      // impl is properly initialized here
  
      string name( "bar" );
      // here comes my problem, the MSVC compiler doesn't see foo(string &amp;name)
      // and gives an error
      A *a = impl.foo( name );
  }
  </code></pre>