未解析的外部符号"class"

Unresolved External symbol "class"

本文关键字:符号 class 外部      更新时间:2023-10-16

错误LNK2001未解析的外部符号"类对象"

当这个类被声明为extern时,它会为连接到它的每一段代码创建这个链接器错误。但当我在其他文件中创建这个类的私有版本时,它们可以正常工作。

更改类变量的名称没有任何效果,因此它不会与导致错误的映射系统发生冲突。

我无法查看和修改错误。它以前是工作的,我打开了文件,希望它能再次运行,但它没有。

对象.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;
}

球.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);

添加

Object objects;  // construct an instance of the class

到文件Object.cpp 的末尾

相关文章: