如何在模板类中设置静态常量变量
How to set up static const variables inside templated classes?
我有以下代码:
template<typename flow_t, typename cost_t>
struct min_cost_flow {
static const flow_t FLOW_INF = numeric_limits<flow_t>::max() / 2;
static const cost_t COST_INF = numeric_limits<cost_t>::max() / 2;
...
};
不幸的是,它没有编译,并给出错误"[…]对`min_cost_flow::cost_INF的未定义引用"。
我尝试过的两个不喜欢的修复方法包括将const
更改为constexpr
(在我的机器上成功编译,但在另一台使用较旧版本的gcc的机器上没有成功编译(,以及定义类下常量的值,但这将值与我想要使用它们的位置分隔得太远。还有其他想法吗?
只需将它们转换为成员函数即可:
template<typename flow_t, typename cost_t>
struct min_cost_flow {
static const flow_t FLOW_INF() { return numeric_limits<flow_t>::max() / 2; }
static const cost_t COST_INF() { return numeric_limits<cost_t>::max() / 2; }
};
如果编译器不支持C++11,请使用const
而不是constexpr
。
相关文章:
- 仅在函数中设置静态变量一次
- 如何使用cmake设置OpenCV以启用动态和静态构建
- 如何在模板类中设置静态常量变量
- 将std::regex设置为静态的好主意吗
- 如果我有五个 Win32 静态控件,如何使用特定的前景色设置其中一个?
- 纯标头库中静态成员变量的正确设置器和 getter
- 将函数的引用设置为其他 c++ 文件中的非静态函数
- 当其他链接库链接 stdc++ 为动态时,如何将 libstdc++ 链接设置为静态?
- 为什么我不能在类中设置静态变量的值?
- C++ 给出编译器错误,将一个(静态)常量全局变量设置为另一个静态常量变量
- 如何在Windows Cmake中设置DLIB作为静态安装的共享LIB
- 如何在另一类设置静态变量
- 在静态方法中设置静态成员变量
- 继承-如何根据类设置静态变量
- 我们是否需要为c++中类的静态成员变量设置静态锁
- 在不同类中使用和设置静态函数指针
- 无法设置静态对象字段的值(错误LNK2001:未解析的外部符号)
- cpp文件中设置静态枚举变量的正确方法
- 在编译时设置静态常量值(不是通过预处理器)
- 为什么在类中设置静态变量时会出现链接器错误