当我尝试编译VS2012项目时出现以下错误:
错误LNK2019:未解析的外部符号“public:int __thiscall map :: GetBlockRef(int,int)”(?GetBlockRef @ map @@ QAEHHH @ Z)在函数“public:void __thiscall map :: LoadLevel(int)”中引用“(?LoadLevel @ map @@ QAEXH @ Z)
错误LNK1120:1个未解析的外部
我已经检查了各种类似问题的网站但找不到任何网站。问题是在 void map :: LoadLevel(int)中调用 int map :: GetBlockRef(int,int)。
为什么我不能调用GetBlockRef()?
map.h
#ifndef MAP_H
#define MAP_H
#include <windows.h>
#include <vector>
#include "Block.h"
using namespace std;
class map
{
public:
map();
int GetGridCoord(int);
int GetBlockRef(int, int); //Declared correctly
void LoadLevel(int);
vector<block>blocks;
vector<int>blockRef;
};
#endif
map.cpp
#include "Map.h"
map::map()
{
for(int i = 0; i < 196; i++)
{
blockRef.push_back(-1);
}
}
int GetGridCoord(int v)
{
return (v / 48) - 1;
}
int GetBlockRef(int x, int y) //Defined correctly
{
x = GetGridCoord(x);
y = GetGridCoord(y);
int index = x + (14 * y);
return index;
}
void map::LoadLevel(int level)
{
int index;
block tmpBlock;
tmpBlock.InitBlockData(144, 144, "rock");
index = GetBlockRef(tmpBlock.xPos, tmpBlock.yPos); //THIS IS CAUSING ERRORS!!
blockRef[index] = 0;
blocks.push_back(tmpBlock);
}
答案 0 :(得分:5)
//Defined correctly
不是真的。
int GetBlockRef(int x, int y)
与...不一样
int map::GetBlockRef(int x, int y)
。