使用std :: vector链接错误

时间:2012-05-01 16:50:27

标签: c++ vector hyperlink std


我遇到了矢量声明的问题 这是代码:

.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&amp; __thiscall std :: vector&gt; :: operator [](unsigned int)”中引用“(??一个?$ vector @ VSprite @@ V?$ allocator @ VSprite @@@ std @@@ std @@ QAEAAVSprite @@ I @ Z)AnimatedSprite.obj

     

错误2致命错误LNK1120:1个未解析的外部C:\ DevProjects \ SDLSkeleton \ Debug \ SDLSkeleton.exe

我找到了从预处理器定义中删除_DEBUG的解决方案,但这样做似乎有点不对。
这是正确的解决方案吗?删除它的后果是什么? 在我检查的书和文件中,它应该只是一个常见的变量声明,但是这个错误出现了。

感谢。

1 个答案:

答案 0 :(得分:3)

这是因为您的构建不一致:您定义了_DEBUG宏,但链接到版本CRT版本(/ MD)。因此,要么删除_DEBUG,要么选择/ MDd选项。