Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;使用传递给构造函数的变量创建对象向量_C++ - Fatal编程技术网

C++ C++;使用传递给构造函数的变量创建对象向量

C++ 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;

我正在编写的程序使用一个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.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()'