我正在尝试用 C++ 创建管理器类,或者至少是全局可用数据字段的集合。我只是希望能够在不需要函数的情况下获取和设置一些全局数据。如果可以的话,我也想避免使用单例。
我试过一个静态类:
#ifndef MANAGER_H
#define MANAGER_H
class Manager
{
public:
static float AspectRatio;
};
#endif MANAGER_H
但是当我尝试使用“Manager::AspectRatio”时,我收到 LNK2001 编译器错误,提示 Unresolved external 问题
我也尝试过全局字段:
#ifndef MANAGER_H
#define MANAGER_H
float Manager_AspectRatio = 1.0f;
#endif MANAGER_H
但是当我在多个文件中包含“manager.h”时,我收到 LNK2005 编译器错误,提示多个定义。我认为使用 header guard 的目的是为了防止多重定义?
关于如何创建一组我可以在整个程序中访问和更改的全局数据字段的任何见解?
最佳答案
您已声明您的字段正常。您只是没有告诉编译器将它们存储在哪里。
如链接器错误所示,您必须指定一个 存储位置,这意味着它不能在 header 中。
添加文件manager.cpp:
#include "manager.h"
float Manager::AspectRatio = 1.0f; // for the static class member version
关于C++ 管理器数据字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18087407/