我有以下功能:
template <typename T, size_t SIZE>
void minSortLoop(array<T, SIZE>& a){
for(size_t o = 0; o < SIZE; o++) {
size_t minIx = 0;
for(size_t i = o + 1; i < SIZE; i++) {
if(a[i] < a[minIx]) {
minIx = i;
}
}
swap(a[o], a[minIx]);
}
}
我喜欢从其他地方拨打电话,如:
std::array<int, 3> arr = {3,1,-9};
minSortLoop(arr);
但是我得到了错误:
描述资源路径位置类型无效参数'候选者 是:void minSortLoop(?&amp;)'Test.cpp / gTest line 23语义错误
描述资源路径位置输入没有匹配的呼叫功能 to'minSortLoop(std :: array *)'Test.cpp / gTest line 23 C / C ++ 问题
如何正确调用我的排序功能?
最好的问候: - )
PS:我不允许使用std :: sort。
编辑1:
@FrançoisMoisan:
我试图通过其他方式传递:
std::array<int, 3> arr = {3,1,-9};
minSortLoop(&arr);
有错误:
描述资源路径位置类型无效参数'候选者 是:void minSortLoop(?&amp;)'Test.cpp / gTest line 23语义错误
描述资源路径位置输入没有匹配的呼叫功能 to'minSortLoop(std :: array *)'Test.cpp / gTest line 23 C / C ++ 问题
和
std::array<int, 3> arr = {3,1,-9};
minSortLoop(*arr);
有错误:
描述资源路径位置类型无效参数'候选者 是:void minSortLoop(?&amp;)'Test.cpp / gTest line 23语义错误
描述资源路径位置类型与'operator *'不匹配 (操作数类型是'std :: array')Test.cpp / gTest第23行C / C ++ 问题
不确定如何调用它。引用建议类似我的第一个例子here。
@tadman:
我需要传递大小。这是从任务描述中给出的: - (
@ Jarod42:这是哪个编译器?我在Windows 7下的eclipse中使用了Cygwin。
@pasasap:是的,我编译了它,或者至少我尝试过。它导致所描述的错误。
编辑2:
正如@pasasap在其中一条评论中提到的,似乎问题是因为eclipse。有没有人知道解决方案而不关闭cody分析?
答案 0 :(得分:0)
应该只是
std::array<int, 3> arr = {3,1,-9};
minSortLoop(arr); // not *arr or &arr
答案 1 :(得分:0)
问题是我的IDE Eclipse。一旦我关闭了它按预期编译的代码分析功能。