Il est tard dans la nuit ici et je deviens fou en essayant de résoudre une erreur de l'éditeur de liens.Symbole non résolu lors de l'héritage de l'interface
Si je l'interface abstraite suivante:
class IArpPacketBuilder
{
public:
IArpPacketBuilder(const DslPortId& aPortId);
virtual ~IArpPacketBuilder();
// Other abstract (pure virtual methods) here...
};
et j'instancier comme ceci:
class DummyArpPacketBuilder
: public IArpPacketBuilder
{
public:
DummyArpPacketBuilder(const DslPortId& aPortId)
: IArpPacketBuilder(aPortId) {}
~DummyArpPacketBuilder() {}
};
pourquoi j'obtiens l'erreur suivante lors de la liaison?
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
est une interface abstraite, donc tant que je les constructeurs et définis dans l'interface destruction du béton (dérivée), je devrais être bien, non? Eh bien, il ne semble pas.
J'ai pu hériter de cette interface dans une autre bibliothèque sans aucun problème, donc je ne pensais pas que ce serait un problème. Ai-je besoin de les définir dans une interface abstraite? – LeopardSkinPillBoxHat
@Leopard, intéressant. Je pensais que cela ne fonctionnerait pas de cette façon - si vous déclarez explicitement un constructeur/destructeur, le compilateur ne le générera pas automatiquement pour vous. Notez que C++ n'a pas de concept de _abstract interface_ - votre classe est une classe ordinaire avec quelques méthodes virtuelles pures, ce qui rend son instanciation directe impossible. –
Merci, je l'ai eu en travaillant en définissant les corps du ctor et du dtor, mais je n'arrive toujours pas à comprendre pourquoi cela a fonctionné dans une autre bibliothèque alors que je n'avais pas défini le ctor et le dtor. – LeopardSkinPillBoxHat