현재 구현 된 추상 인터페이스가있는 C++ 프로젝트에서 현재 작업하고 있습니다. 인터페이스에는 구현 된 메서드가 있으며이 메서드는 재정의하지 않습니다. 내 구현을 사용할 때 컴파일러 (MSVC) 인터페이스 메서드를 볼 수 없습니다. 이 문제의 원인은 무엇이며 어떻게 해결할 수 있습니까?구현에 가상 메서드가 표시되지 않습니다.
여기에 코드가옵니다.
#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);
}
내가 그것을 좀보고 내 편집기에 코드를 붙여 넣은,하지만 난 반 고정 후 나는 그것을 포기 12 개의 오류가 있지만 아직 컴파일되지 않았습니다. 당신이 요구하는 단 하나의 문제 만 가진 코드를 제공하는 것이 그렇게 어렵지 않습니까? 그것이 그렇듯이 나는 당신이 불평하는 수십 가지 오류 중 어느 것을 볼 수 없습니다. 코드를 수정하십시오. – sbi
나쁜 코드를 유감스럽게 생각합니다. 나는 이제 오류를 바로 잡았고 이제는 내 문제가있다. –