ベクトル宣言に問題があります。
コードは次のとおりです。
.h
#ifndef ANIMATEDSPRITE_H_
#define ANIMATEDSPRITE_H_
#include "Sprite.h"
#include <vector>
//using namespace std;
class AnimatedSprite //abstract class to point sprites
{
public:
AnimatedSprite();
~AnimatedSprite();
//gets and sets
Sprite GetMySprite(int _index);
void SetSpriteToList(Sprite _sprite);
int GetState() const;
void SetState(int _state);
//other
private:
std::vector<Sprite> spriteList;
int state; //estado que esse sprite representa (parado esquerda, andando direita, etc)
};
#endif
.cpp
#include "AnimatedSprite.h"
AnimatedSprite::AnimatedSprite()
{
spriteList.clear();
state = NULL;
}
AnimatedSprite::~AnimatedSprite()
{
}
Sprite AnimatedSprite::GetMySprite(int _index)
{
return spriteList[_index];
}
void AnimatedSprite::SetSpriteToList( Sprite _sprite )
{
//Sprite* temp = new Sprite(1,2);
spriteList.push_back(_sprite);
}
int AnimatedSprite::GetState() const
{
return state;
}
void AnimatedSprite::SetState( int _state )
{
state = _state;
}
しかし、私は2つのエラーが発生しています:
エラー 1 エラー LNK2019: 関数で参照されている未解決の外部シンボルimp _CrtDbgReportW "public: class Sprite & __thiscall std::vector >::operator[](unsigned int)" (??A?$vector@VSprite@@V?$allocator @VSprite@@@std@@@std@@QAEAAVSprite@@I@Z) AnimatedSprite.obj
エラー 2 致命的なエラー LNK1120: 1 つの未解決の外部 C:\DevProjects\SDLSkeleton\Debug\SDLSkeleton.exe
プリプロセッサ定義から _DEBUG を削除する解決策を見つけましたが、それを行うのはちょっと間違っているようです。
それは正しい解決策ですか?それを削除した結果はどうなりますか?
私がチェックした本とドキュメントでは、それは単なる共通変数宣言であるべきですが、このエラーが表示されました。
ありがとう。