尝试创建类的实例会在XCode中引发vtable错误

时间:2012-05-15 23:25:33

标签: c++ xcode class linker-errors

我正在尝试创建以下类的实例:

#ifndef Sik_GameEntity_h
#define Sik_GameEntity_h

class GameEntity {
    public:

        ~GameEntity(){};
        void setup();
        void update();
        void draw();
        void clear();

    protected:

    private:  
};


#endif

这些方法中的每一个(减去解构器)都在我的.cpp文件中充实。

for ( int i = 0; i < nEntities; i++ )
{
    GameEntity ent;
    ent.setup();
    entities.push_back(ent);
}

我正在创建一个实例并将其插入到Game Entity对象的向量中。当我创建一个实例时,我从XCode得到以下错误:]

Undefined symbols for architecture i386:
  "GameEntity::GameEntity()", referenced from:
      appCore::setup() in appCore.o
  "GameEntity::~GameEntity()", referenced from:
      appCore::setup() in appCore.o
      std::vector<GameEntity, std::allocator<GameEntity> >::_M_insert_aux(__gnu_cxx::__normal_iterator<GameEntity*, std::vector<GameEntity, std::allocator<GameEntity> > >, GameEntity const&) in appCore.o
      void std::_Destroy<GameEntity>(GameEntity*) in appCore.o
  "vtable for GameEntity", referenced from:
      GameEntity::GameEntity(GameEntity const&) in appCore.o
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
ld: symbol(s) not found for architecture i386

我已经尝试添加构造函数,但它没有什么区别,我仍然收到相同的错误。在课堂上我做错了很明显吗?

编辑: 我忘了提,我清理了我的构建。

1 个答案:

答案 0 :(得分:0)

以下注意和错误意味着您尝试在cpp文件而不是头文件中内联构造函数或设置方法。删除cpp文件中的所有内联关键字

 NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
 ld: symbol(s) not found for architecture i386