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