C++ 模板参数作为变量

C++ 模板参数作为变量,c++,templates,variables,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

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

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;
}
无论是否调用函数,都会出现错误

我猜是因为这个问题

int size_ = field_dim *dim; // Compiler Error Here
这很好。这不可能是错误

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

这很好。这不可能是错误


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

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

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


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

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

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


(这是假设您有一个成员函数
dim()
。我根据错误消息进行了假设,但这可能是问题中实际包含的有用信息。)

域网格的定义是什么?很可能你不应该说两遍
。谢谢你的回复。。。。。是的,你是对的。。。但在不同的上下文中,有一个函数字段_dim()。实际上我想使用一个成员字段。我没注意到这个错误。
DomainGrid
的定义是什么?很可能你不应该说两遍
。谢谢你的回复。。。。。是的,你是对的。。。但在不同的上下文中,有一个函数字段_dim()。实际上我想使用一个成员字段。这个错误从我的眼睛里消失了。@Als:根据帖子和提供的信息,我认为这是一个答案。它告诉他去寻找真正的问题,而这个问题不在发布的代码中。@Als,如果你认为答案不有用,我们有一个向下投票按钮。@Als:那么,也许你应该更经常地使用它。。)“向下投票”按钮的存在是有原因的我删除了我的一些评论,因为后来对答案做了某些修改,这使我的评论显得毫无根据。@Als:如果以
开头的第二句话,真正的问题不是…
使你的评论没有根据,那么之前也是没有根据的,因为这句话中没有任何新的内容,只是重复了第一句话,因为第一句话几乎说问题不在OP认为导致错误的那一行。@Als:根据帖子和给出的信息,我认为这是一个答案。它告诉他去寻找真正的问题,而这个问题不在发布的代码中。@Als,如果你认为答案不有用,我们有一个向下投票按钮。@Als:那么,也许你应该更经常地使用它。。)“向下投票”按钮的存在是有原因的我删除了我的一些评论,因为后来对答案做了某些修改,这使我的评论显得毫无根据。@Als:如果以
开头的第二句话,真正的问题不是…
使你的评论没有根据,那么之前也是没有根据的,因为这句话里没有什么新的东西,除了第一句话的重复,因为第一句话几乎说问题不在OP认为导致错误的那一行。
int size_ = field_dim *dim; // Compiler Error Here