模板参数作为变量

时间:2011-06-25 12:41:43

标签: c++ templates variables

有没有办法将模板参数用作变量? 例如,如果我有一个功能

template<int dim>
void DomainGrid<dim>::getData(Data data_, int field_dim)
{
    int size_ = field_dim *dim; // Compiler Error Here
    for(int i =0; i<size_; ++i)
       std::cout<<data_[i]<<std::endl;
}

我可以获得类似的功能吗?编译此函数会在

处产生错误
invalid use of member (did you forget the ‘&’ ?)

无论是否调用该函数,都会出现错误

我猜这是因为this问题......

2 个答案:

答案 0 :(得分:2)

int size_ = field_dim *dim; // Compiler Error Here

这很好。这不是一个错误。

真正的问题不在于您在此处发布的代码中。所以发布DomainGrid的定义和完整的错误消息。

答案 1 :(得分:2)

重命名模板参数或成员函数?

这似乎是最简单,最直接的解决方案。每当多个符号具有相同的名称时,您就会冒名字冲突的风险。因此,在这种情况下,不要对多个符号使用相同的名称。

(这假设您有一个成员函数dim()。我假设基于错误消息,但它可能是实际包含在问题中的有用信息。)