C : 错误 LNK: 未解析的外部符号,由虚函数引起

新手上路,请多包涵

我的界面的类等概述!

动物.H:

 class Animal
{
public:
   virtual void walk();
}

动物.CPP

=空

牛.H:

 class Cow : public Animal
{
public:
   virtual void walk();
}

在这里,它应该异常地知道函数 walk 是从它派生的类中获取的,对吗? (ea Animal..)当我不定义函数walk时,它应该说我应该正确定义它…?

牛.CPP:

 void Cow::walk()
{
   //do something specific for cow
}

其他类.H

 namespace SomeNamespace
{
   void LetAnimalWalk();
}

其他类.CPP

 Cow myCow;
namespace SomeNamespace
{
   void LetAnimalWalk()
   {
      myCow.walk();
   }
}

这应该可以正常工作吗?…我的意思是命名空间,“Class::…”的东西?以及我继承和使用接口的方式?

因为通过这种方式我得到了从接口创建的每个功能,所以每个虚拟功能都会给我以下错误:

 SomeOtherClass.obj : error LNK2019: unresolved external symbol "public: virtual void __thiscall Cow::Walk (...etc etc...) referenced in function "void __cdecl SomeNamespace::LetAnimalWalk() (...etc etc...)

有谁知道我做错了什么,我发现主要是这意味着我没有正确声明一个函数(在 Cow.cpp 的某个地方??)

提前谢谢各位

原文由 Sebastiaan van Dorst 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 668
1 个回答
class Animal
{
public:
   virtual void walk();
}

您需要定义该功能或使其成为纯虚拟的

class Animal
{
public:
   virtual void walk() = 0;
}

原文由 Barış Uşaklı 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题