c++ - c ++重新初始化静态常量成员
问题描述
我有一个班级Worker
和另一个班级A
有一个static const
私人成员,如
class Worker {
enum class IMPL {
LAZY = 1,
ACTIVE = 2,
CRAZY = 4,
... // omitted for brevity
};
Worker(IMPL impl);
... // omitted for brevity
};
class A {
private:
static const Worker worker;
... // omitted for brevity
};
的值worker
在一个翻译单元中只设置一次,它既不需要跨实例A
(因此是static
关键字)也不需要在程序期间(因此是关键字)更改const
。例如,它设置为
//somefile.cpp
const auto A::worker = Worker{LAZY};
然而,它们有不同的可能值,worker
为它们编写基准测试单元正在成为一个问题。我想A
用不同的工作人员对类的所有实现进行基准测试。我可以为 enum 中的每个元素编写一个基准测试单元,它使用适当的值IMPL
初始化,然后运行。但是我需要编写一个不同的翻译单元,其中包含这个初始化和. 有没有办法可以避免这种情况?A
worker
main()
IMPL
我不想在worker
其中添加变量,A
因为这是性能关键代码,并且会带来线程安全问题。
解决方案
推荐阅读
- react-native - 是否有任何与 react native 和 expo 一起使用的库可以将图像压缩到目标文件大小?
- java - RecyclerView 适配器附加跳过布局,为什么?
- python - torch.multiprocessing.Queue 不会产生加速
- flutter - 如何从默认标签栏删除底部
- node.js - 如何使用猫鼬更新进行多重更新
- java - 如何使用 Java 代码调用 GraphQL 查询/突变
- android - 如何在android中为标记设置动画
- reactjs - 使用 React Native 为 Zomato API 创建搜索功能
- wordpress - 有人可以解释这段代码// wordpress
- python - 深度 Q 网络给出相同的 Q 值并且没有改善