0


ベクトル宣言に問題があります。
コードは次のとおりです。

.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 を削除する解決策を見つけましたが、それを行うのはちょっと間違っているようです。
それは正しい解決策ですか?それを削除した結果はどうなりますか?
私がチェックした本とドキュメントでは、それは単なる共通変数宣言であるべきですが、このエラーが表示されました。

ありがとう。

4

1 に答える 1

3

これは、ビルドに一貫性がないためです。_DEBUG マクロを定義していますが、リリース CRT バージョン (/MD) とリンクしています。したがって、_DEBUG を削除するか、/MDd オプションを選択してください。

于 2012-05-01T16:55:07.740 に答える