我有两个类,一个继承自另一个。当我编译时,我收到以下错误:

我真的无法弄清楚发生了什么..谁能看到我做错了什么?我正在使用 Visual C++ Express 2008。这里是文件..
"包含/实用程序/Parsables/Base.hpp"

#ifndef CAFFEINE_UTILITY_PARSABLES_BASE_HPP
#define CAFFEINE_UTILITY_PARSABLES_BASE_HPP

namespace Utility
{
 namespace Parsables
 {
  class Base
  {
  public:
   Base( void );
   virtual ~Base( void );
  };
 }
}

#endif //CAFFEINE_UTILITY_PARSABLES_BASE_HPP
"src/Utility/Parsables/Base.cpp"
#include "Utility/Parsables/Base.hpp"

namespace Utility
{
 namespace Parsables
 {
  Base::Base( void )
  {
  }

  Base::~Base( void )
  {
  }
 }
}
"包含/实用程序/Parsables/Entity.hpp"
#ifndef CAFFEINE_UTILITY_PARSABLES_ENTITY_HPP
#define CAFFEINE_UTILITY_PARSABLES_ENTITY_HPP

#include "Utility/Parsables/Base.hpp"

namespace Utility
{
 namespace Parsables
 {
  class Entity : public Base
  {
  public:
   Entity( void );
   virtual ~Entity( void );
  };
 }
}

#endif //CAFFEINE_UTILITY_PARSABLES_ENTITY_HPP
"src/Utility/Parsables/Entity.cpp"
#include "Utility/Parsables/Entity.hpp"

namespace Utility
{
 namespace Parsables
 {
  Entity::Entity( void )
  {
  }

  Entity::~Entity( void )
  {
  }
 }
}

最佳答案

相关位是这样的:

unresolved external symbol "public: __thiscall Utility::Parsables::Base::Base(void)"

您需要为 Base::BaseBase::~Base 提供定义。声明还不够好。即使你在任何一个函数中都无事可做,你也需要留下一个空的函数体,因为 C++ 实际上要求函数存在。 C++ 将诸如虚拟表维护之类的东西放在构造函数和析构函数中,因此即使您不需要在那里做任何事情,也必须定义它们——C++ 必须在那里做事。

您确定 Base.cpp 包含在构建中吗?

关于派生类中的构造函数和析构函数的 C++ LNK2019 错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2750173/

10-11 23:15
查看更多