gpt4 book ai didi

c++ - C++ 中的模板函数

转载 作者:太空宇宙 更新时间:2023-11-04 12:11:37 24 4
gpt4 key购买 nike

我是新手。我在 visual studio 中尝试了这个模板函数,但出现了以下语法错误:

缺少类型说明符 - 假定为 int。注意:C++不支持default-int

 template <typename Object,typename Comparator> 
const Object & findMax(const vector<Object> &a, Comparator comp)
{
int maxIndex = 0;
for(int i = 1; i < a.size(); i++){
if(comp.isLessThan(a[maxIndex], a[i]))
maxIndex = i;
}
return a[maxIndex];
}
class LessThanByWidth {
public:
bool isLessThan(const Rectangle &a, const Rectangle &b) const{
return (a.getWidth() < b.getWidth());
}
};

我不知道到底是什么问题。此函数未在任何类中声明。

最佳答案

如果没有来自编译器错误的更多上下文,我无法确定,但这通常是您在尝试将函数声明为具有不在范围内或尚未出现的某种类型的参数时遇到的错误宣布。你有没有#include <vector>在你的程序的顶部?如果你这样做了,你可以尝试将函数重写为

 template <typename Object,typename Comparator> 
const Object & findMax(const std::vector<Object> &a, Comparator comp){
int maxIndex = 0;
for(int i = 1; i < a.size(); i++){
if(comp.isLessThan(a[maxIndex], a[i]))
maxIndex = i;
}
return a[maxIndex];
}

显式使用 vector 的完全限定名称?这可能会解决您的问题。

希望这对您有所帮助!

关于c++ - C++ 中的模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9579370/

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