在 C++ 模板中声明的访问常量
access constant declared in a c++ template
我有
template <typename A,
typename B,
typename C>
class Template
{
public:
static const size_t ZONE_X = 0;
static const size_t ZONE_Y = 1;
...
}
我从其他模板访问静态 const 变量的最优雅方式是什么,在我的情况下,这些模板是依赖注入或策略?或者我应该只定义模板中的常量?
您可以使用
Template<void,void,void>::ZONE_X
请注意,给定其定义,Template
需要三个void
。当然,您可以使用其他类型,例如 int
或混合
Template<int,int,int>::ZONE_X
或
Template<void,int,float>::ZONE_X
参数
列表部分应该与引用静态成员一起使用,也许您不应该在模板中定义它
#include <iostream>
using namespace std;
template <typename A,
typename B,
typename C>
class Template
{
public:
static const size_t ZONE_X = 0;
static const size_t JOIN_Y = 1;
};
template<typename A>
class Template2
{
public:
static size_t get_zone_x()
{
return Template<A,A,A>::ZONE_X;
}
};
int main()
{
std::cout << Template<int,int,int>::ZONE_X << std::endl;
std::cout << Template2<int>::get_zone_x() << std::endl;
return 0;
}
相关文章:
- 如何循环访问常量字符**?
- 为什么在PIMPL中无法访问实现类的常量函数?
- 如何访问常量易失性 std::array?
- 常量表达式中的静态成员访问
- 为什么访问器函数必须是常量?漏洞在哪里?
- 为什么可以在编译时访问非常量、非静态成员而无需类的实例
- Cout 在循环访问常量字符时提供垃圾输出
- 我可以访问唯一指针作为常量引用吗?
- 如何在C++中访问带有星号的常量字符*数组
- 对列表中的任意元素的常量时间访问 (C++)
- C++:访问由另一种方法返回的向量的常量向量时出现分段错误
- 静态强制转换以访问静态常量类成员
- 如何避免地图访问的常量投射?
- 设计:常量和非常量访问器相互依赖
- C++常量访问器和参考最佳实践
- 访问另一个类中的静态常量
- 如何提供对包装类的常量只读访问
- 私有成员的常量访问器之间的比较
- 无法访问常量静态标准::映射枚举结构
- 在 C++ 模板中声明的访问常量