Hi, 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?
Here comes the code.
#include <string>
#include <vector>
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 &name){
     for ( int i(0); i < num_foo(); i++)
      if ( foo(i)->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 &m_foos[i];
    }
    std::vector<A> 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 &name)
    // and gives an error
    A *a = impl.foo( name );
}