C++;游戏加载对象/全局对象 我对C++还很陌生,所以请原谅我的问题是显而易见的。我正在(尝试)编写一个RPG游戏。目前一切都进行得很好,但我现在必须考虑如何在游戏开始时加载所有对象(用于单位类、项目等)

C++;游戏加载对象/全局对象 我对C++还很陌生,所以请原谅我的问题是显而易见的。我正在(尝试)编写一个RPG游戏。目前一切都进行得很好,但我现在必须考虑如何在游戏开始时加载所有对象(用于单位类、项目等),c++,object,load,globalization,extern,C++,Object,Load,Globalization,Extern,我见过关于DLL和全局对象的线程在头文件中使用extern,但我想知道哪种方法最实用/有效?(因为游戏本身只有这么大) 目前,我的代码非常笨拙,实现得不好(在尝试使用一个函数在单独的函数中声明我的对象之前,我甚至没有想过为什么它们不可访问),我应该使用extern而不是必须在main()中声明我的对象来实例化它们(见下文) #包括 #包括 #包括“单位h” #包括“UClass.h” 使用名称空间std; //在程序启动时使用分离功能加载类列表。 无效荷载等级(UClass和obj) { 目标负

我见过关于DLL和全局对象的线程在头文件中使用extern,但我想知道哪种方法最实用/有效?(因为游戏本身只有这么大)

目前,我的代码非常笨拙,实现得不好(在尝试使用一个函数在单独的函数中声明我的对象之前,我甚至没有想过为什么它们不可访问),我应该使用extern而不是必须在main()中声明我的对象来实例化它们(见下文)

#包括
#包括
#包括“单位h”
#包括“UClass.h”
使用名称空间std;
//在程序启动时使用分离功能加载类列表。
无效荷载等级(UClass和obj)
{
目标负荷(“农民”);
}
int main(){
//加载类。。。

可以查看一下std库,您在其中定义了一些结构,例如list。我的想法是,您可以创建加载到游戏中的对象列表,在解析几何体或其他逻辑时,您可以遍历该列表。我认为这有助于开始。如果我正确理解您的问题。

学习如何1)加载包含用于初始化对象的数据(纹理、对话框、名称等)的资源文件,2)以跨不同源文件(转换单元)可用的方式创建实际对象3)完全不同的东西。全局变量通常是要避免的。我觉得你的代码很好。不确定你认为DLL与任何事情都有什么关系。@Agentlien。我指的是你写的第一点是的。我不知道我初始化对象的方式是否效率低下(因为我必须重复多次才能包含我需要的所有对象):/@john.我可能有点误解,但我指的是全局对象?(它们还会被称为变量吗?)因为我不确定这些对象是否只能从main()访问函数?还是我误解了>@Iskardes不确定全局对象和全局变量之间的区别。但是您在main中创建的对象可以在main之外访问,例如,您可以在loadClass函数中访问。您在main中使用的名称仅在main中可见,但这并不意味着它们命名的对象在main中可见在C++的外部不能访问。C++中的这些问题通常是通过编写类来解决的。谢谢,我还没有考虑过列表,我会看一看。
#include <iostream>
#include <string>
#include "Unit.h"
#include "UClass.h"

using namespace std;

// Seperate function at program start to load class list.
void loadClass(UClass& obj)
{
    obj.load("Peasant");

}

int main() {

    //Load classes...
    cout << "Creating peasant...\n";
    UClass peasant;
    loadClass(peasant);
    cout << peasant.show() << endl;

    cout << "\nCreating unit...\n";
    Unit man;
    man.SetLvl();
    man.SetClass(peasant);
    man.ShowInfo();

    return 0;
}