gpt4 book ai didi

c++ - C++中一组函数的静态变量

转载 作者:行者123 更新时间:2023-11-28 00:10:01 26 4
gpt4 key购买 nike

有人告诉我使用全局变量是一种不好的做法 - 我愿意同意。我已经知道您可以编写一个函数,每次调用时都返回不同的值,方法如下:

unsigned int foo() {
static unsigned int i = 0;
return i++;
}

有没有办法存储一些只对几个函数可读/可写的变量?例如,假设我有一个 unordered_map<unsigned int, unsigned int>我想要一些功能,向其中添加/删除元素。不使用全局变量是否可行?

最佳答案

您可以在自己的 .cpp 中一起定义这些函数文件并定义 unordered_map<unsigned int, unsigned int>在同一 .cpp 内的匿名命名空间中文件以使其只能由您在该文件中定义的函数访问。

示例 cpp 文件:

namespace {
std::unordered_map<unsigned int, unsigned int> private_map;
}

void map_add(unsigned int key, unsigned int value) {
private_map.insert(std::pair<unsigned int, unsigned int>(key, value));
}

void map_delete(unsigned int key) {
private_map.erase(key);
}

附带的头文件:

#ifndef GlobalMap_H
#define GlobalMap_H

void map_add(unsigned int key, unsigned int value);
void map_delete(unsigned int key);

#endif

包含此 header 将允许您调用访问 map 的函数,但您将无法直接访问 map 。

关于c++ - C++中一组函数的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33637365/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com