2012-10-05 2 views
0

좋아, 내가해야 할 일은 쉬운 질문이지만 문자 그대로 하나의 파일에서 모든 것을 수행하는 동일한 예제의 복사본 만 온라인에서 찾고있는 예제가 없습니다. 아래 예제처럼 인터페이스와 메서드를 사용하려고 노력하고 있지만 컴파일 할 때 Visual Studio에서 해결되지 않은 외부 기호 오류가 발생합니다. 내가 뭘 잘못하고 있는지에 대한 아이디어가 있습니까?C++ 인터페이스 던져 미해결 외부 기호 오류

IFoo.h에서 가상 방법은 가상 순수해야합니다

int Foo::Bar() { 
    return 1; 
} 
+1

-1 "virutal"의 경우 - 문제를 나타내는 실제 코드를 게시하십시오. –

+0

이것은 코드입니다. 이 예제에서는 오류가 발생하기 때문에이 작업을 올바르게 수행하는 방법에 대한 예제를 찾고 있습니다. –

답변

0

IFoo.h

class IFoo { 
public: 
    virutal int Bar(); 
} 

Foo.h

class Foo : public IFoo { 
    virtual int Bar(); 
} 

foo.cpp의 :

class IFoo { 
public: 
    virtual int Bar() = 0; 
}; 

또는 기본 구현을 인라인 또는 IFoo.cpp로 제공하십시오. 그러나, 그것은 접두사를 오해의 소지가있게 만들 것입니다, 인터페이스처럼 작동하지 않을 것입니다.

+0

젠장, 방금 "= 0"이 누락되었습니다. 나는 이것이 작동하는데 필요하다는 것을 깨닫지 못했습니다. 그 점을 지적 해 주셔서 감사합니다. –

1

미해결 기호가 int IFoo::Bar() 인 것으로 가정하면이 함수는 호출 가능 함수로 선언되며 실제로 호출 할 수 있습니다. 당신이 중 하나는이 함수를 정의 할 필요가 또는 당신은 존재하지 않는 선언 할 필요가있다

p->IFoo::Bar() 

를 사용하여 :

virtual int Bar() = 0; 

(여전히 허용하는 당신은하지만, 그것을 정의하기 위해).

관련 문제