c++ - 在哪里定义用于 C++ 类的模板成员变量的常量?
问题描述
假设我想定义一个类Foo
,它的成员变量也是一个 template Bar<int num> baz
。还假设我总是想num
成为. 然后大概我可以按如下方式完成此操作:baz
Foo
class Foo
{
private:
Bar<5> baz;
};
但是,这将引入一个幻数,这通常不是好的编程习惯。我已经考虑在类定义 a la 中定义一个常量const int num = 5;
,但这会为 的每个实例创建一个额外的整数,Foo
如果我有很多实例,这并不理想。我还考虑在类定义之外但在头文件中定义一个常量变量。这样做的好处是可以在.cpp
文件中看到,但是会污染全局命名空间。
我的问题是,实现这一目标的最适合风格的方式是什么?理想情况下,会有一些变量只对头文件和.cpp
文件可见,并且可以在模板调用中使用。
解决方案
您需要一个static
对所有Foo
.
class Foo
{
private:
static constexpr int num = 5;
Bar<num> baz;
};
出于同样的原因,幻数被认为是不好的,您可能还需要一个比num
.
推荐阅读
- javascript - 如何在 Django 中使用 npm 包和 ES6 功能?
- java - 在 Java 中为 weka API 使用 SMOTE 过滤器
- javascript - 来自 Firestore 的推送通知
- javascript - 某些命令的计时器
- sorting - awk 排序计数值求和重复和转置列
- entity-framework-core - 脚手架现有数据库 EF core 2.X 后更新模型
- vb.net - VSTO Outlook.Recipients 值显示外部电子邮件地址与内部电子邮件地址不同
- java - 在 Google App Engine 上从 Java 7 迁移到 Java 8 时出现内存错误/500 错误
- php - Laravel:仅当日期存在时,我如何验证日期?
- bash - 脚本在远程主机上运行 pv 命令 - 所有输出都按预期在本地显示,除了 pv 进度条