C++ 管理器数据字段

标签 c++

我正在尝试用 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 中。

添加文件ma​​nager.cpp:

#include "manager.h"
float Manager::AspectRatio = 1.0f; // for the static class member version

关于C++ 管理器数据字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18087407/

相关文章:

c++ - 将 Boost::Beast 用于 CPU 密集型 REST API,我应该使用异步还是同步方式来实现它们以获得更好的延迟?

c++ - OpenCV:寻找 CPU 密集度较低的帧捕获+调整大小并进入缓冲方式:如何优化我的代码?

c++ - 如何从 ASCII 文件中读取数字 (C++)

c++ - 如何使用 C/C++ 和 Boost Asio 优化客户端/服务器

c++ - 在 C++ 中解析参数

c++ - 如何在不打开 code::blocks 的情况下运行 C++ 程序?

c++ - 前向声明和类

c++ - 将指向 null 的指针设置为分配的内存吗?

c++ - 根据模板模板参数采用的参数数量部分专门化模板的语法是什么?

c++ - 如果我在要求输入 int 时输入单词,会发生什么情况?