在 C++ 模板中声明的访问常量

access constant declared in a c++ template

本文关键字:访问 常量 声明 C++      更新时间:2023-10-16

我有

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;
}