错误 LNK2001未解析的外部符号“类对象对象”
当类被声明为extern时,它将为连接到它的每一段代码创建此链接器错误。但是当我在其他文件中创建该类的私有版本时,它们工作正常。
更改类变量的名称无效,因此它不会与导致错误的映射系统冲突。
我无法查看和修改错误。之前它正在工作,我将文件解除,以期再次运行,但事实并非如此。
Object.cpp
#include "object.h"
#include "Ball.h"
// Constructor
Object::Object() {
std::map<int, std::map<int, IMAGEINFO>> object;
};
Object::~Object() {
object.clear();
};
void Object::Update() {
// Gets all the base object ID's
for (unsigned int i = 0; i < object.size(); i++) {
// Gets all the object's inside that ID.
for (unsigned int j = 0; j < object[i].size(); j++) {
// Gets the object.
IMAGEINFO obj = object[i][j];
// Calls for the processes of the object
obj.Update();
}
}
}
void Object::Render(HDC hdc, RECT* prc, BITMAP bm) {
// Gets all the base object ID's
for (unsigned int i = 0; i < object.size(); i++) {
// Gets all the object's ID's.
for (unsigned int j = 0; j < object[i].size(); j++) {
// Gets the object.
IMAGEINFO obj = object[i][j];
// Calls for the rendering of the object
obj.Render(hdc, prc, bm);
}
}
}
int Object::addObject(IMAGEINFO obj) {
bool index = false;
int indexVal;
short run = 0;
while (!index) {
if (typeid(obj).name() == typeid(object[run]).name()) {
object[run][object[run].size()] = obj;
indexVal = object[run].size();
index = true;
}
else if (run == object.size()) {
object[run][0] = obj;
indexVal = 0;
index = true;
}
run++;
}
return indexVal;
}
object.h
#ifndef OBJECT_H
#define OBJECT_H
#endif
#include <windows.h>
#include <iostream>
#include <map>
#include "renderer.h"
#include "resource.h"
class Object {
public:
// Constructors/Deconstructors
Object();
~Object();
// Processes
int addObject(IMAGEINFO value);
void Update();
void Render(HDC hdc, RECT* prc, BITMAP bm);
private:
std::map<int, std::map<int, IMAGEINFO>> object;
};
extern Object objects;
Ball.cpp
#include "Ball.h";
int indexPos;
HBITMAP hbm_Ball_Image = NULL;
HBITMAP hbm_Ball_Mask = NULL;
IMAGEINFO ballInfo;
void Ball(BITMAP bm, int assx, int assy) {
indexPos = objects.addObject(ballInfo);
hbm_Ball_Image = createImage((HBITMAP) BITMAP_BALL);
hbm_Ball_Mask = createMask((HBITMAP)BITMAP_BALL, RGB(255, 255, 255), bm);
GetObject(hbm_Ball_Image, sizeof(bm), &bm);
ballInfo.height = bm.bmHeight;
ballInfo.width = bm.bmWidth;
ballInfo.x = assx;
ballInfo.y = assy;
ballInfo.speedX = 1;
ballInfo.speedY = 0;
}
ball.h
#ifndef BALL_H
#define BALL_H
#endif
#include <windows.h>
#include <iostream>
#include <map>
#include "renderer.h"
#include "resource.h"
#include "object.h"
void Ball(BITMAP bm, int assx, int assy);
void render(HDC hdc, RECT* prc, BITMAP bm);
答案 0 :(得分:2)
添加
Object objects; // construct an instance of the class
到文件Object.cpp的末尾