0

次のクラスのインスタンスを作成しようとしています。

#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);
}

インスタンスを作成し、それをゲームエンティティオブジェクトのベクトルに挿入しています。インスタンスを作成すると、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

コンストラクターを追加しようとしましたが、違いはありませんでした。それでも同じエラーが発生しました。クラスで何が間違っているのかは明らかですか?

編集:私は言及するのを忘れました、私は自分のビルドをきれいにしました。

4

1 に答える 1

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
于 2012-05-16T01:28:27.627 に答える