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

时间:2014-03-12 15:55:22

标签: c++ templates

我有

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变量的最优雅的方法是什么?在我的情况下,依赖注入或策略是这个? ...或者我应该只从模板中定义常量?

2 个答案:

答案 0 :(得分:1)

您可以使用

Template<void,void,void>::ZONE_X

请注意,鉴于其定义,void需要三个Template。当然,您可以使用其他类型,例如int或混合使用:

Template<int,int,int>::ZONE_X

Template<void,int,float>::ZONE_X

答案 1 :(得分:0)

参数列表部分应该用来引用静态成员,也许你不应该在模板中定义它

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