有没有办法将模板参数用作变量? 例如,如果我有一个功能
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问题......
答案 0 :(得分:2)
int size_ = field_dim *dim; // Compiler Error Here
这很好。这不是一个错误。
真正的问题不在于您在此处发布的代码中。所以发布DomainGrid
的定义和完整的错误消息。
答案 1 :(得分:2)
重命名模板参数或成员函数?
这似乎是最简单,最直接的解决方案。每当多个符号具有相同的名称时,您就会冒名字冲突的风险。因此,在这种情况下,不要对多个符号使用相同的名称。
(这假设您有一个成员函数dim()
。我假设基于错误消息,但它可能是实际包含在问题中的有用信息。)