C++ C++;使用传递给构造函数的变量创建对象向量
我正在编写的程序使用一个2D地图数组来创建对象,这是为GBA编写的。因为每一层的贴图都会改变,所以我不一定知道每种类型的对象会有多少,所以我决定用一个向量作为我的最佳选择,不过我遇到了一些问题。以下是相关代码: main.cppC++ C++;使用传递给构造函数的变量创建对象向量,c++,C++,我正在编写的程序使用一个2D地图数组来创建对象,这是为GBA编写的。因为每一层的贴图都会改变,所以我不一定知道每种类型的对象会有多少,所以我决定用一个向量作为我的最佳选择,不过我遇到了一些问题。以下是相关代码: main.cpp void CreateObjects(const uint8_t map[32][32]){ // line 91 std::vector<wall> WallsVector; for(int y = 0; y < 32;
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.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()'
以及其他几个类似的函数,与析构函数和“u Destroy”
有关
它还以以下错误结束:
collect2.exe:错误:ld返回1个退出状态
(这是我生命中的祸根)
如果有人能洞察出问题所在,我们将不胜感激
提前谢谢
编辑:原来我太傻了,忘了将wall.o添加到makefile中。我认为
WallsVector.push_back(wall((x*8),(y*8))有问题代码>,
您可能需要输入新对象,如,
WallsVector.push_back(新墙((x*8),(y*8))代码>,感谢我收到的所有反馈。Matt McNabb解决了我的问题,我忘了通过将wall.o
添加到makefile来链接该文件。听起来好像你实际上没有编译并链接wall.cpp
你完全正确,我忘了将wall.o
添加到makefile。我觉得很傻。非常感谢。不,我不这么认为。这是一个编译器/链接器错误。这不应该与在堆栈上分配wall或new相关。是的,我忘了将wall.o添加到makefile中。现在可以编译了。使用new
将需要向量来保存指向wall
的指针,而不是wall
s。
main.cpp:99: undefined reference to 'wall::wall(int, int)'
main.cpp:99: undefined reference to 'wall:~wall()'