我正在编写的程序使用地图的2D数组来创建为GBA编写的对象。因为地图将针对每个级别进行更改,所以我不一定知道每种类型的对象有多少,所以我认为向量是我最好的选择,但是我遇到了一些问题。这是相关的代码:
的main.cpp
void CreateObjects(const uint8_t map[32][32]){ // line 91
std::vector<wall> WallsVector;
for(int y = 0; y < 32; y++){
for(int x = 0; x < 32; x++){
switch(map[y][x]){
case 0: // do nothing
break;
case 1: // wall
WallsVector.push_back(wall((x*8), (y*8)));
break;
}
}
}
}
wall.h
#ifndef __WALL_H_INCLUDED__ // line 3
#define __WALL_H_INCLUDED__
#include "library.h"
#include "gameBlock.h"
#pragma once
class wall:public gameBlock {
public:
wall(int, int);
~wall();
private:
};
#endif
wall.cpp
#include "wall.h" // line 3
wall::wall(int passX, int passY){
}
wall::~wall(){
}
这给了我这些错误:
main.cpp:99: undefined reference to 'wall::wall(int, int)'
main.cpp:99: undefined reference to 'wall:~wall()'
与其他几个类似的,与析构函数和'_Destroy<wall>'
有关。
它也以错误结束:
collect2.exe: error: ld returned 1 exit status
(这是我生命中的祸根)。
如果有人能够对出现的问题有所了解,那就非常感激。
提前致谢!
编辑:事实证明我很傻,忘了将wall.o添加到makefile中。答案 0 :(得分:0)
感谢我收到的所有反馈。我的问题是由Matt McNabb解决的,我忘了通过将wall.o
添加到makefile来链接文件。
答案 1 :(得分:-2)
我认为WallsVector.push_back(wall((x*8), (y*8)));
,
你可能需要输入新对象,比如
WallsVector.push_back(new wall((x*8), (y*8)));
,