밤늦게까지 여기있어 링커 오류를 해결하려고 미쳤습니다.상속 인터페이스를 상속 할 때 확인되지 않은 기호
나는 다음과 같은 추상적 인 인터페이스가있는 경우 :
class IArpPacketBuilder
{
public:
IArpPacketBuilder(const DslPortId& aPortId);
virtual ~IArpPacketBuilder();
// Other abstract (pure virtual methods) here...
};
을 내가 같이 인스턴스화 : 링크 할 때
class DummyArpPacketBuilder
: public IArpPacketBuilder
{
public:
DummyArpPacketBuilder(const DslPortId& aPortId)
: IArpPacketBuilder(aPortId) {}
~DummyArpPacketBuilder() {}
};
왜 나는 다음과 같은 오류는 무엇입니까?
Unresolved symbol references:
IArpPacketBuilder::IArpPacketBuilder(DslPortId const&):
ppc603_vxworks/_arpPacketQueue.o
IArpPacketBuilder::~IArpPacketBuilder():
ppc603_vxworks/_arpPacketQueue.o
typeinfo for IArpPacketBuilder:
ppc603_vxworks/_arpPacketQueue.o
*** Error code 1
IArpPacketBuilder
는 (파생) 인터페이스는, 내가 아니, 괜찮을 너무 오래 내가 콘크리트의 생성자와 멸망을 정의로, 추상 인터페이스입니다? 글쎄요.
다른 라이브러리의이 인터페이스에서 아무 문제없이 상속 할 수 있었으므로 문제가 될 것이라고 생각하지 않았습니다. 추상적 인 인터페이스에서 그것들을 정의해야합니까? – LeopardSkinPillBoxHat
@Leopard, 흥미 롭습니다. 그 방법으로는 작동하지 않을 것이라고 생각했습니다. 명시 적으로 생성자/소멸자를 선언하면 컴파일러에서 자동으로 생성자/생성자를 생성하지 않습니다. C++에는 _abstract interface_에 대한 개념이 없습니다. 클래스는 순수 가상 메서드가있는 일반 클래스이므로 직접 인스턴스화 할 수 없습니다. –
감사합니다. ctor 및 dtor의 본문을 정의하여 작동 시켰지만 ctor 및 dtor를 정의하지 않은 경우에도 왜 다른 라이브러리에서 작동하는지 이해할 수 없습니다. – LeopardSkinPillBoxHat