gpt4 book ai didi

c++ - 将模板函数的类型传递给其中使用的模板类?

转载 作者:行者123 更新时间:2023-11-27 23:32:59 24 4
gpt4 key购买 nike

我正在尝试构建一个模板函数。使用了内部模板化类,我想将函数的模板类型传递给这些类。所以我有:

template <class T>
T find_bottleneck (ListGraph &g, CrossRefMap<ListGraph, Edge, T> &weight, Node &s, Node &t) {
// Check if theres a single edge left
if (countEdges(g) == 1) {
CrossRefMap<ListGraph, Edge, T>::ValueIt itr = weight.beginValue();
return *itr;
}

但是这失败了,引用

lemon_graph.cpp: In function ‘T find_bottleneck(lemon::ListGraph&, lemon::CrossRefMap<lemon::ListGraph, lemon::ListGraphBase::Edge, T>&, Node&, Node&)’:
lemon_graph.cpp:20: error: expected ‘;’ before ‘itr’
lemon_graph.cpp:21: error: ‘itr’ was not declared in this scope

我尝试使用一个简单的函数示例重新创建它,该函数根据传递给它的类型生成 vector 并且编译正常,所以我不确定这里的问题是什么。

最佳答案

只是少了一个typename

typename CrossRefMap<ListGraph, Edge, T>::ValueIt

typename 是所有 C++ 模板相关问题中至少 50% 的答案 :-) 它告诉编译器后面总是一个类型,不管模板参数如何 (ValueIt 例如可以是 int 而不是迭代器的 typedef

关于c++ - 将模板函数的类型传递给其中使用的模板类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3578444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com