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

时间:2014-04-11 04:59:10

标签: 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; 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中。

2 个答案:

答案 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)));